Content Negotiation的意思是:当有多种Content-Type可供选择时,选择最合适的一种进行序列化并返回给client. 主要依据请求中的Accept.Accept-Charset.Accept-Encoding.Accept-Language这些属性决定的,但也会查看其它属性 如,如果请求中包含“ X-Requested-With”(ajax请求),在没哟其它Accept时,则使用JSON. Content Negotiation的工作原理 首先,pipeline从Http…
Configuration Settings WebAPI中的configuration settings定义在HttpConfiguration中.有一下成员: DependencyResolver Filters Formatters IncludeErrorDetailPolicy Initializer MessageHandlers ParameterBindingRules Properties Routes Services 在ASP.NET Hosting中配置WebApi na…
Cookie的几个参数: Domain.Path.Expires.Max-Age 如果Expires与Max-Age都存在,Max-Age优先级高,如果都没有设置cookie会在会话结束后删除cookie WebAPI中使用Cookie //写cookie public HttpResponseMessage Get() { var resp = new HttpResponseMessage(); var cookie = new CookieHeaderValue("session-id&q…
原文:Batching Handler for ASP.NET Web API 自定义实现HttpMessageHandler public class BatchHandler : HttpMessageHandler { HttpMessageInvoker _server; public BatchHandler(HttpConfiguration config) { _server = new HttpMessageInvoker(new HttpServer(config)); } p…
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…
Message Handlers是一个接收HTTP Request返回HTTP Response的类,继承自HttpMessageHandler 通常,一些列的message handler被链接到一起.第一个handler收到http request做一些处理,然后将request传递到下一个handler.在某时刻,response被创并返回.这种模式被称为delegating hanlder 服务端消息处理 在服务端,WebAPI管道使用一些内建的message handlers Http…
如果没有对应的web api模板,首先使用nuget进行安装 例子1: ProductController 是以硬编码的方式使用StoreAppContext类的实例,可以使用依赖注入模式,在外部指定上下文实例 public interface IStoreAppContext:IDisposable { DbSet<Product> Products { get; set; } int SaveChanges(); void MarkAsModified(Product item); } p…
HttpResponseException 当WebAPI的控制器抛出一个未捕获的异常时,默认情况下,大多数异常被转为status code为500的http response即服务端错误. HttpResonseException是一个特别的情况,这个异常可以返回任意指定的http status code,也可以返回具体的错误信息. public Product GetProduct(int id) { Product item = repository.Get(id); if (item =…
BSON 是轻量级的,能够进行快速查询和高效的解码/编码.BSON方便查询是由于elements的前面都有一个表示长度的字段,所以解释器可以快速跳过这个elements:高效的解码/编码是因为numeric数据直接存储为numbers,不用转为string. 在服务端启用BSON   public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Formatter…
JSON序列化: WebAPI的默认序列库使用的是Json.NET,可以在Globally中配置使用DataContractJsonSerializer 进行序列化 protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.…