那些年我们遇到的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 中写入数据库连接字符串如下,数据库无法预览,但是好用= =。
bug4:
本地测试时可以使用POST请求方式,但发布后就没了。。。于是如上手动添加对于POST请求的支持(毕竟POST传参方便)。
黑科技2:
从数据库中读数据,通过 DataSet 中转直接转成 XML 格式字符串,就是这么简单。
IIS配置部分
bug5:
asp.net 的 Framework 版本需要跟 IIS 中的一致,在 vs 中项目设置更改项目的 Framework 版本或更改网站的应用程序池都行。
更改应用程序池设置方式:-->更改.NET FrameWork版本
-->应用程序池-->更改版本
-->网站-->自己的网站-->基本设置-->选择应用程序池
bug6:
网站需要拥有物理路径的身份验证及授权,在 “基本设置” 中选择 “连接为” , 连接为特定用户,用户名及密码为 windows 管理员账户及密码(管理员账户没有密码的话就新建一个有密码的管理员吧)。
bug7:
只能通过localhost+端口号访问,不能用ip+端口号访问后端服务器。
网站-->自己的网站,点击“绑定”,将主机名设为自己的ip地址。
安卓部分
bug8:
发送 post请求,获取 response code 后无法获取返回头中 Content-Length 的值,inputStream中获取的数据长度为0。故使用缓存数组,逐段读取信息直至输入流末尾代码如下。
bug9:
从后端得到的 xml 字符串是被转义过的,所以需要反转义以得到正确信息。使用第三方commons-lang包,StringEscapeUtils类中的unescapeHtml4方法进行反转义。
bug10:
依然xml_(:зゝ∠)_。xml解析时,会将两个节点间的换行、空格等空白字符也解析为一个节点,最终使用正则把空白都给替换掉了。s = s.replaceAll(">\\s+<", "><");
遇到的比较烦的bug大概就是这样,如果想起来的话继续补充。
//要发第一篇博客了w~lalala~
这里只是记录下作为一个小白写代码实际过程中遇到的大大小小的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~
相关文章推荐
- 24个常用方法有效优化ASP.NET的性能(四)
- 24个常用方法有效优化ASP.NET的性能(三)
- 24个常用方法有效优化ASP.NET的性能(二)
- 24个常用方法有效优化ASP.NET的性能(一)
- 捕获asp.net下的未处理异常
- Spring AOP + AspectJ annotation example
- Spring AOP + AspectJ in XML configuration example
- ASP.NET多彩下拉框开发实例
- ASP.NET与Mysql数据库连接问题
- ASP FORM表单提交判断
- ASP正则表达式清除HTML指定标签的方法
- ASP.NET MVC 入门3、Routing
- ASP定义数组方法的技巧
- ASP数据库操作方法
- ASP.NET MVC 入门2、项目的目录结构与核心的DLL
- ASP.NET MVC 入门2、项目的目录结构与核心的DLL
- 将 ESP8266 连接到 RaspberryPi
- ASP.NET MVC 入门1、简介
- ASP.NET MVC 入门1、简介
- .NET,C#和ASP.NET的关系