您的位置:首页 > 编程语言 > ASP

那些年我们遇到的bug系列一(安卓+asp.net+sql server开发)

2015-09-17 13:07 716 查看
项目具体开发过程可参见博客http://blog.csdn.net/zhyl8157121/article/details/8169172。

这里只是记录下作为一个小白写代码实际过程中遇到的大大小小的bug_(:зゝ∠)_

数据库部分

bug1:

asp.net 测试中
select 语句说什么都不好使,最后发现 User 是数据库的关键字,不能用作 table 名。默默把表名改成了 Users。

bug2:

sql server 建了一个新用户,本来是理所当然地把权限全给了用户,然后。。。竟然不好用了= =。最后知道 denydatawriter 是拒绝该用户修改数据库中的任何数据。_(:зゝ∠)_



黑科技1:

sql server 中设置id自增。



ASP.NET部分

bug3:

右击项目发布时,Deploy发布形式第一次成功后,之后就不知道为什么无法导入数据库配置= =。而且 Deploy发布貌似会替换现有的 Web.config 文件,于是在 Web.config 中配置的数据库连接字符串以及添加的POST,GET请求方式也没有用了= =。

所以选择了文件发布形式,在 Web.config 中写入数据库连接字符串如下,数据库无法预览,但是好用= =。

<span style="font-size:14px;"><configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
<httpRuntime/>
</system.web>
<connectionStrings>
<add name="connStr" connectionString="xxx" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration></span>


bug4:

本地测试时可以使用POST请求方式,但发布后就没了。。。于是如上手动添加对于POST请求的支持(毕竟POST传参方便)。

黑科技2:

从数据库中读数据,通过 DataSet 中转直接转成 XML 格式字符串,就是这么简单。

public String ExecuteXml(String commStr)
{
//commStr为sql语句,sqlcon为SqlConnection的实例
try
{
SqlDataAdapter da = new SqlDataAdapter(commStr, sqlCon);
DataSet ds = new DataSet();
da.Fill(ds);
return ds.GetXml();
}
catch (Exception e)
{
return null;
}
}


IIS配置部分

bug5:

asp.net 的 Framework 版本需要跟 IIS 中的一致,在 vs 中项目设置更改项目的 Framework 版本或更改网站的应用程序池都行。

更改应用程序池设置方式:-->更改.NET FrameWork版本

-->应用程序池-->更改版本

-->网站-->自己的网站-->基本设置-->选择应用程序池

bug6:

网站需要拥有物理路径的身份验证及授权,在 “基本设置” 中选择 “连接为” , 连接为特定用户,用户名及密码为 windows 管理员账户及密码(管理员账户没有密码的话就新建一个有密码的管理员吧)。

bug7:

只能通过localhost+端口号访问,不能用ip+端口号访问后端服务器。

网站-->自己的网站,点击“绑定”,将主机名设为自己的ip地址。

安卓部分

bug8:

发送 post请求,获取 response code 后无法获取返回头中 Content-Length 的值,inputStream中获取的数据长度为0。故使用缓存数组,逐段读取信息直至输入流末尾代码如下。

ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte buffer[] = new byte[1024];
InputStream is = con.getInputStream();
int count = -1;
while ((count = is.read(buffer, 0, buffer.length)) != -1)
bos.write(buffer, 0, count);
is.close();
Bundle bd = new Bundle();
bd.putString("data", bos.toString("utf-8"));
ps: post请求需要单开线程,否则会报异常。可以在新线程中将 post 到的数据写入 Message ,主Activity 中写一个 Handler 处理该 message ,在生成 post 请求的同时将 Handler 传入线程即可。

bug9:

从后端得到的 xml 字符串是被转义过的,所以需要反转义以得到正确信息。使用第三方commons-lang包,StringEscapeUtils类中的unescapeHtml4方法进行反转义。

bug10:

依然xml_(:зゝ∠)_。xml解析时,会将两个节点间的换行、空格等空白字符也解析为一个节点,最终使用正则把空白都给替换掉了。s = s.replaceAll(">\\s+<", "><");

遇到的比较烦的bug大概就是这样,如果想起来的话继续补充。

//要发第一篇博客了w~lalala~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: