类型的对象(ASP.NET WebAPI中Action的返回值最终都会被转换为HttpResponseMessage类型的对象),该对象包含一个HttpError类型实例。...过滤器可分为三个级别: Action Controller Global 注意:ASP.NET MVC和ASP.NET WebAPI的异常过滤器不可混用 ExceptionHandler 以下情形中的异常...相关阅读 catch all unhandled exceptions in ASP.NET Web Api Handling Errors in Web API Using Exception Filters...and Exception Handlers Exception Handling in ASP.NET Web API Global Error Handling in ASP.NET Web API...2 Action Results in Web API 2 版权声明 本文为作者原创,版权归作者雪飞鸿所有。
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 路由就是Web API如何把...Web API支持一种新的路由类型,被叫做属性路由。顾名思义,属性路由是用属性来创建路由。在你的Web API中属性路由可以让你更好的控制URI。你能容易的创建描述资源阶层的URIs。 ...这个扩展方法被定义在System.Web.Http.HttpConfigurationExtensions类中。...Get方法。...本文参考链接http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web...在ASP.NET Web API中,媒体类型格式化器(Media-type Formatter)是一种能够做以下工作的对象: 从HTTP消息体读取CLR(公共语言运行时)对象 将CLR对象写入HTTP消息体...客户端在HTTP请求的Accept报头中可以请求JSON或XML。 JSON媒体类型格式化器 JSON格式化是由JsonMediaTypeFormatter类提供的。...本文的参考链接为 http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization 同时本文已更新至...Web API导航系列 http://www.cnblogs.com/aehyok/p/3446289.html
如何测量并报告ASP.NET Core Web API请求的响应时间 介绍 大家都知道性能是API的流行语。而相应时间则是API性能的一个重要并且可测量的参数。...我们需要在执行方法之前和之后执行响应时间的计算代码。如果您使用过早期版本的Asp.net Web API,那么您将熟悉Filter的概念。过滤器允许您在请求处理管道中的特定阶段之前或之后运行代码。...因此,它实际上无法检测在其他Asp.net管道中花费的时间。 ? 第三次尝试 我们将使用Asp.net Core中间件来计算API的响应时间 所以,什么是中间件呢?...我们希望在请求进入ASP.NET Core管道后添加代码以启动计时器,并在管道处理响应后停止计时器。请求管道开始时的自定义中间件似乎是访问请求最早访问并在管道中执行最后一步之前进行访问的最佳方法。...总结 在本文中,我们了解了如何利用ASP.NET中间件来管理跨领域问题,例如测量API的响应时间。使用中间件还有其他各种有用的用例,可以帮助重用代码并提高应用程序的可维护性。
在ASP.NET中,Web Api的控制器类派生于ApiController,该类与ASP.NET的Control类没有直接关系,因此不能像在Web MVC中直接使用HttpContext,Cache...,Session等,要使用的话,一般是从System.Web.HttpContext.Current静态对象引用HttpContext,从而使用Session等状态数据。 ...不过,要在控制器类中通过HttpContext的Session属性直接使用Session状态数据,将抛出nullreference异常,网查主要有两种解决方案,一个是重载Global的init()方法,...在该方法中开放Session状态,另一个设计带Session的路由处理器 重载Global的Init() public class WebApiApplication : System.Web.HttpApplication...{ route.MapHttpRoute( name: "WebApiRoute1", routeTemplate: "api
HTTP请求格式 1.首行:【方法(GET) / URL / 版本号(例如HTTP/1.1) ——这三部分用空格分隔开】 2.协议头(header):【若干个键值对之间用“: ”(冒号空格)来分割】...3.空行:【header的结束标志】 4.正文:body HTTP响应格式 1.首行:【版本号 / 状态码 / 描述信息 ——这三部分用空格分隔开】 2.协议头(header):【若干个键值对之间用...“: ”(冒号空格)来分割】 3.空行:【header的结束标志】 4.正文:body 常见的HTTP方法 方法 理解 (这只是最初的理想定义情况在现在的应用中已经没有这么严格了,具体怎么定义还是看程序员的喜好...) GET 获取资源 POST 传输实体主体 PUT 传输文件 HEAD 获得报文首部 DELETE 删除文件 OPTIONS 询问支持方法 TRACE 追寻路径 CONNECT 要求用索道协议连接代理...LINK 建立和资源之间的联系 UNLINE 断开联系关系 GET和POST的区别 对于GET和POST的区别各路大佬众说纷纭,但我认为他们之间的最大区别就是: GET把数据放到URL中 POST
在《通过扩展让ASP.NET Web API支持W3C的CORS规范》中,我们通过自定义的HttpMessageHandler自行为ASP.NET Web API实现了针对CORS的支持,实际上ASP.NET...方法开启ASP.NET Web API针对CORS的支持,而是采用如下的方式将创建的CorsMessageHandler对象添加到消息处理管道中。...如果现在运行ASP.NET MVC程序,通过调用Web API以跨域Ajax请求得到的联系人列表依然会显示在浏览器上。...CORS系列文章 [1] 同源策略与JSONP [2] 利用扩展让ASP.NET Web API支持JSONP [3] W3C的CORS规范 [4] 利用扩展让ASP.NET Web API...支持CORS [5] ASP.NET Web API自身对CORS的支持: 从实例开始 [6] ASP.NET Web API自身对CORS的支持: CORS授权策略的定义和提供 [7] ASP.NET
在今天编辑推荐的《Hello Web API系列教程——Web API与国际化》一文中,作者通过自定义的HttpMessageHandler的方式根据请求的Accep-Language报头设置当前线程UI...如果你对ASP.NET Web API的执行机制有足够了解的话,你会发现实际上有很多种解决方案。...不过这些解决方案都不够完美,原因很简单:ASP.NET Web API的整个框架均采用基于Task的并行编程模式,所以每个可扩展组件均可以在不同的线程中执行,这样会导致我们没有办法100%控制目标方法真正执行的线程的...唯一的Action方法返回的字符串是从资源文件中提取的(类型Resources为资源文件自动生成的类型),而ActionFilterAttribute就应用在这个Get方法上。...ASP.NET Web API默认使用的HttpActionSelector类型为ApiControllerActionSelector,我们自定义的ExtentedApiControllerActionSelector
构成ASP.NET Web API核心框架的消息处理管道既不关心请求消息来源于何处,也不需要考虑响应消息归于何方。...当我们采用Web Host模式将一个ASP.NET应用作为目标Web API的宿主时,实际上是由ASP.NET管道解决了这两个问题。...具体来说,ASP.NET自身的URL路由系统借助于HttpControllerHandler这个自定义的HttpHandler实现了ASP.NET管道和ASP.NET Web API管道之间的“连通”,...[本文已经同步到《How ASP.NET Web API Works?》]...二、HttpSelfHostServer ASP.NET Web API的Self Host寄宿模式是通过一个System.Web.Http.SelfHost.HttpSelfHostServer对象来完成的
从编程的角度来讲,ASP.NET Web API针对CORS的实现仅仅涉及到HttpConfiguration的扩展方法EnableCors和EnableCorsAttribute特性。...ASP.NET Web API最终会利用这些策略对请求(包括预检请求)进行解析并生成相应的CORS响应报头。...关于针对目标Action的选择问题,有一个核心的核心的细节值得关注:如果当前请求并非真正的跨域资源请求,而仅仅是一个采用“OPTIONS”作为HTTP方法的预检请求(Preflight Request)...CORS系列文章 [1] 同源策略与JSONP [2] 利用扩展让ASP.NET Web API支持JSONP [3] W3C的CORS规范 [4] 利用扩展让ASP.NET Web API支持...CORS [5] ASP.NET Web API自身对CORS的支持: 从实例开始 [6] ASP.NET Web API自身对CORS的支持: CORS授权策略的定义和提供 [7] ASP.NET
理想的RESTful Web API采用面向资源的架构,并使用请求的HTTP方法表示针对目标资源的操作类型。...[本文已经同步到《How ASP.NET Web API Works?》] 我们一般采用“HTTP方法重写”的方式来解决这个问题。...客户端发送的请求只能采用网络允许的HTTP方法(一般来说,GET和POST总是被支持的),但是与资源操作方式相匹配的HTTP方法名称会通过一个请求报头发送给服务器。...ASP.NET Web API采用管道式的设计,这个旨在解决部分HTTP方法在网络环境中不被支持的HTTP方法重写机制可以很容易地通过自定义HttpMessageHandler来实现。...按照ASP.NET Web API默认提供的HTTP方法与Action方法名称之间的映射机制,这4个Action方法支持HTTP方法与自身的方法名称一致。
随着深入使用ASP.NET Web Api,我们可能会在项目中考虑将前端的业务分得更细。比如前端项目使用Angularjs的框架来做UI,而数据则由另一个Web Api 的网站项目来支撑。...这样问题就来了,如果前端通过ajax访问Web Api项目话,就涉及到跨域了。我们知道,如果直接访问,正常情况下Web Api是不允许这样做的,这涉及到安全问题。...项目并运行,接着在页面http://localhost:4631/cors-demo.html中点击按钮“跨域获取数据”,通过firebug的控制台,我们可以看到数据跨域加载成功了 好了,这篇关于ASP.NET...Web Api支持跨域请求的示例和演示就完成了。...2.在Web Api的控制器中,我们还对单个Action进行跨域访问限制,只需要在Action上设置EnableCors属性即可,如: [HttpGet] [EnableCors("http://example.com
在ASP.NET Web API的应用编程接口中,资源授权检验的结果通过类型CorsResult来表示。...二、CorsRequestContext 针对CORS的支持其实并不限于仅被使用在ASP.NET Web API上,用于根据提供的资源授权策略对跨域资源请求进行授权检验得引擎定义在程序集System.Web.Cors.dll...对于ASP.NET Web API来说,CORS资源授权检验实施的目标是表示当请求的HttpRequestMessage对象,这个对象自然不可能使用在ASP.NET的核心CORS引擎中。...利用扩展让ASP.NET Web API支持JSONP [3] W3C的CORS规范 [4] 利用扩展让ASP.NET Web API支持CORS [5] ASP.NET Web API自身对CORS...的支持: 从实例开始 [6] ASP.NET Web API自身对CORS的支持: CORS授权策略的定义和提供 [7] ASP.NET Web API自身对CORS的支持: CORS授权检验的实施
HTTP状态码 HTTP状态码会告诉API的消费者以下事情: 请求是否执行成功了 如果请求失败了,那么谁为它负责 HTTP的状态码有很多,但是Web API不一定需要支持所有的状态码。...HTTP状态码一共分为5个级别: 1xx,属于信息性的状态码。Web API并不使用1xx的状态码。 2xx,意味着请求执行的很成功。...not allowed,当尝试发送请求到资源的时候,使用了不被支持的HTTP方法时,就会返回405状态码; 406 - Not acceptable,这表示API消费者请求的表述格式并不被Web...错误并不会影响API的可用性。 故障 Faults 故障是指,针对一个合理的请求,API无法返回它的响应。 换句话说就是API引起的问题。 这些是HTTP 5xx错误。...这是一个Get请求,但是并没有找到该资源,返回的状态码是404,而响应的body就是 ProblemDetails。
该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。...客户端初始化请求到服务器,服务器负责处理请求并返回响应。 这些请求和响应都是围绕这些资源的表示形式进行传递。 Q2. 解释下REST原则? Ans....当您要通过HTTP创建面向资源的服务时选择WEB API,因为其可以使用完整的 HTTP的特性(如URI,请求/响应头,缓存,版本控制,各种内容格式)。...WEB API 的请求映射到Http动词对应的action;MVC 的请求直接映射到对应的action name。 ASP.NET WEB API是新的框架和ASP.NET框架核心的一部分。...ASP.NET WEB API 路由与 ASP.NET MVC 路由有什么区别? Ans. ASP.NET MVC 与 ASP.NET WEB API 使用路由来监控传入的请求。
html 本文介绍的是使用ASP.NET Core建立Richardson成熟度为2级的伪RESTful web API, 本文介绍的是GET和POST....,表示请求的资源不存在 405 - Method not allowed,这就是当我们尝试发送请求给某个资源时,使用的HTTP方法却是不允许的,例如使用POST api/countries, 而该资源只实现了...当请求的media type不可用的时候,并且消费者不支持默认格式,这时服务器就应该返回 406 Not Acceptable 状态码。 ASP.NET Core 支持输出和输入两种格式化器。...但是由于路由参数不支持集合形式, 只能以字符串形式传递, 所以可以做成这样的路由参数: api/xx/(1,2,3,4,5)....本文的源码地址: https://github.com/solenovex/ASP.NET-Core-2.0-RESTful-API-Tutorial
让ASP.NET Web API支持JSONP和W3C的CORS规范是解决“跨域资源共享”的两种途径,在《通过扩展让ASP.NET Web API支持JSONP》中我们实现了前者,并且在《W3C的CORS...对于ASP .NET Web API来说,如果我们具有一种机制能够根据预定义的资源授权规则自动生成和添加针对CORS的响应报头,那么资源的跨域共享就迎刃而解了。...为了能够有效地应付浏览器采用的预检机制,我们只能在ASP.NET Web API的消息处理管道级别实现对提供资源的授权检验和对CORS响应报头的添加。...在ASP.NET MVC应用用户调用Web API的View中,针对Ajax请求调用Web API的JavaScript程序被改写成如下的形式:我们在发送Ajax请求之前利用setRequestHeader...利用扩展让ASP.NET Web API支持JSONP [3] W3C的CORS规范 [4] 利用扩展让ASP.NET Web API支持CORS [5] ASP.NET Web API自身对CORS
ASP.NET Web API是在.NET Framework之上构建Web API的框架。在本教程中,您将使用ASP.NET Web API创建返回产品列表的Web API。...本教程中使用的软件版本 Visual Studio 2013 Web API 2 创建一个Web API项目 在本教程中,您将使用ASP.NET Web API创建返回产品列表的Web API。...Web API模板使用ASP.NET MVC提供API帮助页面。我正在使用本教程的空模板,因为我想显示没有MVC的Web API。一般来说,你不需要知道ASP.NET MVC来使用Web API。...Price { get; set; } } } 添加控制器 在Web API中,控制器是处理HTTP请求的对象。...例如,要获得ID为5的产品,URI为api/products/5。 有关Web API如何将HTTP请求路由到控制器方法的更多信息,请参阅ASP.NET Web API中的路由。
RESTful API则是基于REST原则构建的API,它使用HTTP协议进行通信,通过URL定义资源,并使用HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作。...以下是对RESTful API的概述: 资源 在RESTful API中,所有的数据都被视为资源,并由URL来表示。每个资源都有一个唯一的URL地址,并且可以通过HTTP方法对其进行操作。...例如,一个简单的用户资源可以被表示为/users。 HTTP方法 RESTful API使用HTTP方法来定义对资源的操作,常用的HTTP方法包括: GET:用于获取资源的信息。...4.3 示例:使用ASP.NET Core创建一个简单的RESTful API,并在前端调用 创建ASP.NET Core Web API 项目 首先,您需要创建一个ASP.NET Core Web...您可以发送HTTP请求来测试GET、POST、PUT和DELETE操作,并验证API的行为。
在《通过扩展让ASP.NET Web API支持W3C的CORS规范》中我们通过自定义的HttpMessageHandler为ASP.NET Web API赋予了跨域资源共享的能力,具体来讲,这个自定义的...接下来我们通过实例演示如何利用ASP.NET Web API自身的支持来实现“跨域资源共享”。 ? 如图右图所示,我们利用Visual Studio在同一个解决方案中创建了两个Web应用。...ASP.NET Web API对CORS提供的原生支持实现在一个名为“Microsoft ASP.NET Web API 2 Cross-Origin Support”的NuGet包中。...ASP.NET针对CORS的实现就实现在程序集System.Web.Cors.dll中,另一个程序集System.Web.Http.Cors.dll自然就是针对ASP.NET Web API的。...从编程的角度来讲,ASP.NET Web API针对CORS的实现仅仅涉及到两个方面: 其一,HttpConfiguration的扩展方法EnableCors,它用于开启ASP.NET Web API针对