编写asp.net接口小结(痛苦的回忆)

来源:互联网 发布:java if else switch 编辑:程序博客网 时间:2024/06/05 10:37


由于上司需要,需要编写一个asp.net的小接口。该接口的作用是:接收json数据,经过后台处理(与数据库交互等),产生一个json数据返回过去。。。。同时这个要求这个接口只能被固定IP访问,拥有比较高的安全权限。


问题分解:asp.net处理json,与数据库交互,ip限制的设置
大概思路是,利用vs建立一个 网站 工程,然后新建一个aspx 对它的aspx.cs进行编辑即可

  1. 与数据库交互(最简单,也最让我蛋疼的一件事)


    系统:win8
    iis版本:8
    IDE:vs2013

    方法谷歌一下,最简单直接的方式就是利用System.Data.SqlClient进行数据库的连接,下面给出一个Demo




    //string connectString = System.Configuration.ConfigurationManager.ConnectionStrings["Employment"].ToString();//这个参数是在web.config中进行设置的string connectString = "server=[服务器ip地址,端口号];uid=[用户名];pwd=[密码];database=[数据库名称];"SqlConnection sqlconn = new SqlConnection(connectString);sqlconn.Open();SqlCommand myCommand = sqlconn.CreateCommand();myCommand.CommandText = @"select [列名] from [表名] where [条件]";SqlDataReader myDataReader = myCommand.ExecuteReader();myDataReader.Read();//将reader的游标移向第一行,一开始是读不出来的string result = myDataReader[0].ToString();//或者在方括号中使用列名sqlconn.Close();


<connectionStrings>    <add name="Employment" connectionString="同上" providerName="System.Data.SqlClient"/></connectionStrings>



这个方法是正确的
但是一开始我新建工程时用的平台是   .net4.0 就一直报错报错,搞得我都崩溃了 ,具体错误名称忘记了好像是一个什么内存出错什么的

后来用了.net3.0在处理json数据的时候不好用

再后来建立网站工程的时候用了.net3.5才算是正好

第一个问题解决

2. 写完网页工程的时候如何调试?(第二蛋疼的事情)

最简单直接的方式肯定是在自己的windows的iis下进行部署和调试

具体步骤很好查,vsIDE下,右键工程--生成网站--发布网站,然后发布在文件系统中

我的在iis下部署该网站的方法是,进入mmc 添加iis管理单元,右键defaultwebsite 注意是“添加应用”,后面相应进行输入和选择,确定就可以。

但是发现发布简单,但是却无法访问。比如我的别名叫做gate,我访问  http://localhost/gate/gate.aspx,但是却貌似没有权限

经过多方查证,发现是IIS的有些功能没有打开:应用程序开发功能--ASP.NET。还有那个什么ISAPI也勾选上。忘记了

打开以后可以正常访问了

3. 处理json数据
推荐一个工具json.net:http://james.newtonking.com/json

首先是要接收json数据,由于发送的是纯json数据,所以直接把request的流拿到,然后解码出一个字符串,那个工具很好用,详细的没有研究,只求所需,反序列化如下

System.IO.Stream jsonStream = this.Context.Request.InputStream;        byte[] jsonBytes = new byte[jsonStream.Length];        jsonStream.Read(jsonBytes, 0, jsonBytes.Length);        string jsonString = System.Text.Encoding.UTF8.GetString(jsonBytes);        this.reqClass = Newtonsoft.Json.JsonConvert.DeserializeObject<ReqClass>(jsonString);


序列化如下,并且发送纯json数据如下

string resJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(this.resClass);        this.Context.Response.Clear();        this.Context.Response.ContentType = "application/json";        this.Context.Response.Charset = "utf-8";        this.Context.Response.Write(resJsonString);        this.Context.Response.End();

请注意:这两个类要和那些json数据一一对应,请查看那个网页


4. IP设置限制的方法

在windows普通版的iis中,需要开启iis的ip安全功能,这样mmc的iis管理单元就能出现一个ip设限,很好操作

在windows server中,还没有试验,发一个网站,貌似被墙了,自行翻墙:http://blog.nami.idv.tw/?p=473


5. 感想

总体感觉就是蛋疼。

然后感觉ASP.NET真的太太太太沉重了,关联的组件太多太多了,用着好麻烦,一个功能都不知道去哪里找。

网上关于问题的解答也不是很多,是不是用asp.net的同学比较少。


 如果是只想用一个连接去访问数据库,而不是为了查询多次而连接多次的话,可以在连接字符串上加上

MultipleActiveResultSets=true


原创粉丝点击