当前位置: 首页 > news >正文

秦皇岛网站开发公司如何在网上做自己的网站

秦皇岛网站开发公司,如何在网上做自己的网站,重庆科技建设,德州做网站多少钱今天学习一下#xff1a;WebAPI如何使用呢#xff1f; 首先我们打开vs新建一个WebAPI项目#xff0c;可以看到一共有这些文件夹目录 首先了解一下这些文件夹/文件的意义#xff08;按照程序启动的流程#xff0c;相关的配置项就不说了#xff09;#xff0c; Global.as…今天学习一下WebAPI如何使用呢 首先我们打开vs新建一个WebAPI项目可以看到一共有这些文件夹目录 首先了解一下这些文件夹/文件的意义按照程序启动的流程相关的配置项就不说了 Global.asax这个是程序启动的文件内部的默认方法【Application_Start】对文件绑定、WebAPI路由、mvc控制器路由等进行注册只会在第一个用户访问的时候运行上网找了一下相关资料发现可以在其中添加很多的配置方法 1 using System;2 using System.Collections.Generic;3 using System.IO;4 using System.Linq;5 using System.Text;6 using System.Web;7 using System.Web.Http;8 using System.Web.Mvc;9 using System.Web.Optimization;10 using System.Web.Routing;11 12 namespace AAAAAA.WebAPI13 {14 /// summary15 /// WebApi全局设置16 /// /summary17 public class WebApiApplication : System.Web.HttpApplication18 {19 /// summary20 /// 第一个访问网站的用户会触发该方法. 通常会在该方法里定义一些系统变量21 /// 如聊天室的在线总人数统计,历史访问人数统计的初始化等等均可在这里定义.22 /// /summary23 protected void Application_Start()24 {25 26 }27 28 /// summary29 /// 在应用程序关闭时运行的代码在最后一个HttpApplication销毁之后执行30 /// 比如IIS重启文件更新进程回收导致应用程序转换到另一个应用程序域31 /// /summary32 /// param namesender/param33 /// param namee/param34 void Application_End(object sender, EventArgs e)35 {36 37 }38 39 /// summary40 /// 每个用户访问网站的第一个页面时触发;41 /// /summary42 /// param namesender/param43 /// param namee/param44 void Session_Start(object sender, EventArgs e)45 {46 string IP this.Context.Request.UserHostAddress;47 Session[IP] IP;48 }49 50 /// summary51 /// 使用了session.abandon(),或session超时用户退出后均可触发.52 /// /summary53 /// param namesender/param54 /// param namee/param55 void Session_End(object sender, EventArgs e)56 {57 // Session[User]; 向数据库中记录用户退出时间58 }59 /// summary60 /// 在每一个HttpApplication实例初始化的时候执行61 /// /summary62 /// param namesender/param63 /// param namee/param64 void Application_Init(object sender, EventArgs e)65 {66 67 }68 69 /// summary70 /// 在应用程序被关闭一段时间之后在.net垃圾回收器准备回收它占用的内存的时候被调用。71 ///在每一个HttpApplication实例被销毁之前执行72 /// /summary73 /// param namesender/param74 /// param namee/param75 void Application_Disposed(object sender, EventArgs e)76 {77 78 }79 80 /// summary81 ///所有没有处理的错误都会导致这个方法的执行82 /// /summary83 /// param namesender/param84 /// param namee/param85 void Application_Error(object sender, EventArgs e)86 {87 #region 记录错误日志88 //Exception ex Server.GetLastError().GetBaseException();89 //StringBuilder str new StringBuilder();90 //str.Append(\r\n DateTime.Now.ToString(yyyy.MM.dd HH:mm:ss));91 //str.Append(\r\n.客户信息);92 93 94 //string ip ;95 //if (Request.ServerVariables.Get(HTTP_X_FORWARDED_FOR) ! null)96 //{97 // ip Request.ServerVariables.Get(HTTP_X_FORWARDED_FOR).ToString().Trim();98 //}99 //else 100 //{ 101 // ip Request.ServerVariables.Get(Remote_Addr).ToString().Trim(); 102 //} 103 //str.Append(\r\n\tIp: ip); 104 //str.Append(\r\n\t浏览器: Request.Browser.Browser.ToString()); 105 //str.Append(\r\n\t浏览器版本: Request.Browser.MajorVersion.ToString()); 106 //str.Append(\r\n\t操作系统: Request.Browser.Platform.ToString()); 107 //str.Append(\r\n.错误信息); 108 //str.Append(\r\n\t页面 Request.Url.ToString()); 109 //str.Append(\r\n\t错误信息 ex.Message); 110 //str.Append(\r\n\t错误源 ex.Source); 111 //str.Append(\r\n\t异常方法 ex.TargetSite); 112 //str.Append(\r\n\t堆栈信息 ex.StackTrace); 113 //str.Append(\r\n--------------------------------------------------------------------------------------------------); 114 创建路径 115 //string upLoadPath Server.MapPath(~/Logs/); 116 //if (!System.IO.Directory.Exists(upLoadPath)) 117 //{ 118 // System.IO.Directory.CreateDirectory(upLoadPath); 119 //} 120 创建文件 写入错误 121 //System.IO.File.AppendAllText(upLoadPath DateTime.Now.ToString(yyyy.MM.dd) .log, str.ToString(), System.Text.Encoding.UTF8); 122 处理完及时清理异常 123 //Server.ClearError(); 124 跳转至出错页面 125 //Response.Redirect(Error.html); 126 #endregion 127 } 128 129 130 /// summary 131 /// //每次请求时第一个出发的事件这个方法第一个执行 132 /// /summary 133 /// param namesender/param 134 /// param namee/param 135 void Application_BeginRequest(object sender, EventArgs e) 136 { 137 var url Request.Url.ToString(); 138 139 } 140 141 /// summary 142 ///在执行验证前发生这是创建验证逻辑的起点 143 /// /summary 144 /// param namesender/param 145 /// param namee/param 146 void Application_AuthenticateRequest(object sender, EventArgs e) 147 { 148 149 } 150 151 /// summary 152 /// 当安全模块已经验证了当前用户的授权时执行 153 /// /summary 154 /// param namesender/param 155 /// param namee/param 156 void Application_AuthorizeRequest(object sender, EventArgs e) 157 { 158 159 } 160 161 /// summary 162 /// 当ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务时发生从而跳过处理程序页面或者是WebService的执行。 163 ///这样做可以改善网站的性能这个事件还可以用来判断正文是不是从Cache中得到的。 164 /// /summary 165 /// param namesender/param 166 /// param namee/param 167 void Application_ResolveRequestCache(object sender, EventArgs e) 168 { 169 170 } 171 172 /// summary 173 /// 读取了Session所需的特定信息并且在把这些信息填充到Session之前执行 174 /// /summary 175 /// param namesender/param 176 /// param namee/param 177 void Application_AcquireRequestState(object sender, EventArgs e) 178 { 179 180 } 181 182 /// summary 183 /// 在合适的处理程序执行请求前调用 184 ///这个时候Session就可以用了 185 /// /summary 186 /// param namesender/param 187 /// param namee/param 188 void Application_PreRequestHandlerExecute(object sender, EventArgs e) 189 { 190 191 } 192 193 194 /// summary 195 ///当处理程序完成对请求的处理后被调用。 196 /// /summary 197 /// param namesender/param 198 /// param namee/param 199 void Application_PostRequestHandlerExecute(object sender, EventArgs e) 200 { 201 202 } 203 204 /// summary 205 /// 释放请求状态 206 /// /summary 207 /// param namesender/param 208 /// param namee/param 209 void Application_ReleaseRequestState(object sender, EventArgs e) 210 { 211 212 } 213 214 /// summary 215 /// 为了后续的请求更新响应缓存时被调用 216 /// /summary 217 /// param namesender/param 218 /// param namee/param 219 void Application_UpdateRequestCache(object sender, EventArgs e) 220 { 221 222 } 223 224 /// summary 225 /// EndRequest是在响应Request时最后一个触发的事件 226 ///但在对象被释放或者从新建立以前适合在这个时候清理代码 227 /// /summary 228 /// param namesender/param 229 /// param namee/param 230 void Application_EndRequest(object sender, EventArgs e) 231 { 232 233 } 234 235 /// summary 236 /// 向客户端发送Http标头之前被调用 237 /// /summary 238 /// param namesender/param 239 /// param namee/param 240 void Application_PreSendRequestHeaders(object sender, EventArgs e) 241 { 242 243 } 244 245 /// summary 246 /// 向客户端发送Http正文之前被调用 247 /// /summary 248 /// param namesender/param 249 /// param namee/param 250 void Application_PreSendRequestContent(object sender, EventArgs e) 251 { 252 253 } 254 } 255 } App_Start这里面主要是程序启动的时候需要进行的一下注册文件比如路由文件筛选什么的 其他的就不介绍了。 打开框架默认提供的控制器【ValuesController】可以看到内部提供了5个demo分别是无参Get带参GetPostPutDelete的请求方式其中Post和Put的例子参数都是带有【FromBody】特性这里介绍一下【FromBody】和【FromUrl】 【FromBody】强制接口从FormData中读取数据 【FromUrl】强制接口从Uri中读取数据。 webApi的路由我们可以看到 控制器之后是直接带参数的程序是如何根据路由找到对应的接口的呢WebApi是遵循RESTful设计风格的webapi会根据请求方式的不同来自动寻找对应的接口,如果一个webAPI控制器内部对于同样的请求方式有多个接口那么webapi默认路由会找不到对应的接口而报错如果要遵循RESTful风格可能需要对每个业务的接口进行控制器隔离。 那么如果需要改变这种请求方式变成和MVC类似的请求应该如何修改呢 我们需要将webapi添加一个路由机制 这样我们就可以使用mvc模式的路由或者webapi默认路由进行接口的调用了。 WebApi是遵循Restful风格的所以不建议在路由中出现action不推荐使用和MVC控制器相同格式的路由 那么使用webapi有哪些地方需要注意呢 1.ajax中的type有四种方式get(查询),post(修改),delete(删除),put(插入) 。 2.写webapi时在后台的方法最好将特性标记号对应上[HttpGet],[HttpPost],[HttpDelete],[HttpPut]。http请求和rest风格的api如果不想在后台方法写特性但也可以将方法名以Get开头否则会报错。 get:若是查询数据通过get,其实get请求会将参数拼装到url上面而url长度是有限的 post若是对原有数据新增和修改就用post多用post即可。post不是将参数放在url上面的而是放在表单上的。 3.传递的参数username名一定要相同但是大小写可以不一样。 4.若是user{name:张苏纳,id:123,age:19} 然后datauser那么在后台是接收不到的即使在页面调试时是可以看到数据。若是想接收到的话需要在后台写成GetUserModeuri([FormUri]Users user)。 5.基于第4的另一种方法。可以将user序列化转化为一个字符窜然后后台接收后反序列化即可得到。data:{userString:JSON.stringify(user)} 6.(1)若是通过post请求的时候是将数据放在from data里面的若是传递单个参数不要在ajax上不要写对应参数。 (2)只有不写id才能得到与[formbody]无关。若是通过post传递实体那么在后台可以直接拿到 不需要任何转化。 (3)当然也可以通过dataJson.stringify(user)      contentType:application/jsoncontentType默认是json类型的来在后台同样得到。 (4)若是参数包含了一个实体还有一个字符串参数data:{Useruser,Info:info}该怎么办可以通过引用Newtonsoft.Json.Linq的JObject类型。jObject.ToObject是一个序列化方法将josn转化为对象。 7.dynamic动态类型比如一个实体和一个参数放到同一个对象中获取对象后然后dynamic jsonjData; var mm json.user,动态类型是可以直接访问属性的。 8.put和post是一样的使用put主要是插入数据使用。 9.delete也是一样的。 10.webapi最方便的是给前端使用。
http://www.pierceye.com/news/744076/

相关文章:

  • 造型设计网站推荐哪些企业网站做得好
  • 东丰网站建设网络域名怎么注册
  • 行业网站模板装饰公司东莞网站建设
  • 成都政务网站建设电脑编程与网站建设
  • 描述电子商务网站建设网站开发教程H5
  • 个人做电影网站有什么风险招聘网站制作公司
  • 安徽网站推广公司网站集群建设参数
  • 个人网站做哪种能赚钱网站维护有哪些企业
  • 专题类的网站郴州全网推广公
  • 流行用什么做网站手机响应式网站
  • 绍兴网站建设 微德福如何填写网站开发验收单
  • php 创建网站开发中山如何建设网站
  • 莱芜企业建站公司申请微信公众号
  • 手机网站 html5上海网站开发怎么做
  • 精密科技东莞网站建设ppt简约大气模板
  • 一家专做特卖的网站seo推广优化方案
  • 南沙门户网站建设监理工程师成绩在建设部哪个网站查
  • 做视频网站需要什么证件wordpress从
  • 算卦网站开发京东慧采入驻条件及费用2023年
  • 网站建设好后如何提交搜索引擎公共网络建设指导书
  • 做网站最快多久DW怎么做电商网站
  • 论坛模板网站建设鞍山市信息网站
  • 微网站的定义商城小程序开发报价
  • 做一网站要什么软件wordpress support hls player
  • 青岛网站制作服务装饰设计素描
  • 物流网站公司站外调用WordPress评论
  • 免费的行情网站下载安装拍艺术照
  • 佛山网站设计多少钱兴国做网站
  • 自己可以做网站生意好做吗手机制作音乐的软件app
  • 国土政务网站建设制度下载购物app