如果framework找到一个匹配的URI,创建一个包含占位符值的字典,key就是这些占位符(不包括大括号),value来自URI或者默认值,这个字典存储在IHttpRouteData对象中.默认值可能是RouteParameter.Optional,此时对应的key/value不会被添加到该字典中. routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{category}/{id…
如果一条路由匹配,WebAPI选择controller和action通过如下方式: 1.找到controller,将"controller"赋值给{controller}变量 2.寻找action,web api查看http的请求方式,然后寻找一个以对应请求方式开头的action,如Get请求,需要寻找一个名为Get...的action,这种方式仅支持Get,Post,Put和Delete操作. 除了依据Http请求的方式,还可以显示为action指定http method通过Http…
EMD安全 查询语法是基于entity data model(EDM),不是基于底层的model类型,可以从EDM排除一个属性,这样这个属性在client就不能被查询了. 有两种方式可以从EDM中排除一个属性 第一种使用 [IgnoreDataMember]特性 public class Employee { public string Name { get; set; } public string Title { get; set; } //当应用于类型的成员时,指定该成员不是数据协定的一部…
Authentication(认证)   WebAPI中的认证既可以使用HttpModel也可以使用HTTP message handler,具体使用哪个可以参考一下依据: 一个HttpModel可以检测ASP.NET请求管道中的所有请求,一个message handler仅仅可以检测到被路由到这个WebAPI的请求 可以预先设置message handlers,让特定的route使用指定的authentication scheme Http Module只能在IIS中使用,Message ha…
HTML Forms概述 <form action="api/values" method="post"> 默认的method是GET,如果使用GET,表单数据被编码到URI中作为查询字符串:如果使用POST,表单数据放在Request body中,enctype属性指定编码类型: 编码方式(enctype) 描述 application/x-www-form-urlencoded 表单数据被编码成name/value形式,默认的编码方式 multipa…
安装追踪用的包 Install-Package Microsoft.AspNet.WebApi.Tracing Update-Package Microsoft.AspNet.WebApi.WebHost //-Version指定具体的版本 启用追踪的功能(在WebApiConfig.cs中) public static class WebApiConfig { public static void Register(HttpConfiguration config) { SystemDiagn…
Message Handlers是一个接收HTTP Request返回HTTP Response的类,继承自HttpMessageHandler 通常,一些列的message handler被链接到一起.第一个handler收到http request做一些处理,然后将request传递到下一个handler.在某时刻,response被创并返回.这种模式被称为delegating hanlder 服务端消息处理 在服务端,WebAPI管道使用一些内建的message handlers Http…
Configuration Settings WebAPI中的configuration settings定义在HttpConfiguration中.有一下成员: DependencyResolver Filters Formatters IncludeErrorDetailPolicy Initializer MessageHandlers ParameterBindingRules Properties Routes Services 在ASP.NET Hosting中配置WebApi na…
HttpResponseException 当WebAPI的控制器抛出一个未捕获的异常时,默认情况下,大多数异常被转为status code为500的http response即服务端错误. HttpResonseException是一个特别的情况,这个异常可以返回任意指定的http status code,也可以返回具体的错误信息. public Product GetProduct(int id) { Product item = repository.Get(id); if (item =…
从WebApi 1迁移到WebAPI 2要改变配置代码如下: WebApi 1: protected void Application_Start() { // WARNING - Not compatible with attribute routing. WebApiConfig.Register(GlobalConfiguration.Configuration); } WebAPI 2: protected void Application_Start() { // Pass a del…