Routing Tables路由表 在Asp.Net Web API中,一个控制器就是一个处理HTTP请求的类,控制器的public方法就被叫做action方法或简单的Action。 当Web API接收到一个请求的时候,它将这个请求路由到一个Action。 注意:Web API的路由与Asp.Net MVC的路由是非常相似的。 category=category 然而,以下URI就不匹配,因为它缺少“api”字段 /product/1 注意:在路由中使用“api”的原因是为了避免与ASP.NET MVC 因为如果不注释 Web API会匹配到请求匹配的多个操作错误 ? 这种风格的路由类似于Asp.Net MVC,而且可能与RPC式的API接近。 你也可以通过使用ActionName注解属性来覆盖动作名。
什么是Web API HTTP不仅仅服务于Web Pages。他也是一个创建展示服务和数据的API的强大平台。HTTP是简单的,灵活的,无处不在的。 Web API 与MVC 的区别 1.使用区别 MVC主要用于Web站点开发,它在后端实现了一套完整的MVC开发框架,能提供方便的页面开发,提供给了后端Html构成,用户可以方便的开发出带页面的站点 Web API主要用于做开放API接口,更抽象,更不注重VIew生成 2.自身实现区别 两种框架主要使在Asp.Net的基础上进行改造,主要是对 而Web API除了扩展前者外,另外写出了一套独立的,独立于Asp.Net的消息处理管道,就像借鉴了原来的房子模型,重新设计出了另一套别墅,这也很好的解释了为什么Web API可以寄宿在不同的宿主上(宿主本质就是利用一个具体的一个用程序为 Web API提供给一个可运行的环境,并解决请求的接收和响应的回复),如 Web Host,Self Host方式,这与WCF相似。
ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务。 ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。 这是 MSDN 给出的官方定义! 由于REST仅仅是一种架构风格, 所以它是与具体的技术平台无关的, 所以采用 REST架构的应用未必一定建立在Web之上。 在 VS 中创建一个 空项目,并为其添加 Web API。 添加模型 模型是表示应用程序中的数据的对象。 ASP.NET Web API 可以自动序列化到 JSON、 XML 或某种其他格式,然后写入 HTTP 响应消息的正文序列化的数据。 只要客户端可以读取的序列化格式,它可以反序列化对象。
路由调试 RouteDebugger 是调试 ASP.NET MVC 路由的一个好的工具,在ASP.NET WEB API中相应的有 WebApiRouteDebugger ,Nuget安装 Install-Package _31bf3856ad364e35\System.Web.WebPages.Razor.dll”位置处)。 (在上下文“Default”中的“C:\Windows \Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\821cf8a9 Refer: http://www.asp.net/web-api/overview/creating-web-apis/creating-api-help-pages http://blogs.msdn.com /b/webdev/archive/2013/04/04/debugging-asp-net-web-api-with-route-debugger.aspx http://www.asp.net/web-api
Web API 框架是一个面向 Http 协议的通信框架。相对于 WCF 而言,Web API 只面向于 Http 协议设计,而且没有 WCF 那么繁琐的配置。 Web API 的开发类似于 ASP.NET MVC 中控制器的开发,但是相对于直接使用 ASP.NET MVC 来返回 Json 对象的方式而言,Web API 封装了数据的序列化、反序列化,接口、实现都更加简单 跟 ASP.NET MVC 的 Json 序列化不同的是,Web API 使用了 Newtonsoft.Json 框架来进行序列化。 Action 匹配 Web API 框架默认是基于 Restful 架构模式的,与 ASP.NET MVC 有区别的是,它会根据 Http 请求的 HttpMethod(Get、Post、Put、Delete username=hqf@qq.com&password=dsd 关于 POST 参数绑定 Web API 相对于 ASP.NET MVC,使用了新的参数绑定类。
创建一个Web API项目 第一步,创建以下项目 ? 当然,你也可以创建一个Web API项目,利用 Web API模板,Web API模板使用 ASP.Net MVC提供API的帮助页。 注意,如果你使用了ASP.NET MVC 已熟悉控制器,Web API控制器类似于MVC控制器,但是继承ApiController,而不是Controller类 ? ASP.NET Web API使它容易操作HTTP响应消息。 默认情况下,ASP.NET Web API框架从路由获取简单的参数类型,从请求正文获取复杂的类型。 第五个方法:删除产品,在控制器添加代码如下。 上述测试我们发现我们的路由只是“api/{controler}”就成功返回了GetProducts方法中的数据,这也是ASP.NET Web API与ASP.NET MVC 之间的区别。
HttpResponseException-----HTTP响应异常 如果Web API控制器抛出一个未捕捉的异常,会发生什么呢? 异常过滤器实现System.Web.Http.Filters.IExceptionFilter接口。 注意:ASP.NET Web API中的异常过滤器与ASP.NET MVC中是及其相似的。然后,它们被声明在不用的命名空间下,且功能也是独立的。 特别强调以下,ASP.NET MVC中使用的HandlerErrorFilterAttribute不会处理Web API控制器抛出的异常。 这个集合中的所有异常过滤器会应用于任何Web API控制器Action public class WebApiApplication : System.Web.HttpApplication {
Asp.Net Web API不可以需要IIS。可以自己在主机上承载一个Web API 创建WebAPI.Server项目 创建一个控制器项目的服务端 ? 记得扩展引用System.Web.Http using System.Collections.Generic; using System.Linq; using System.Net; using System.Web.Http { products.Remove(products.SingleOrDefault(y => y.Id == id)); } } } 承载Web API 在Program类中添加如下引用 using System.Http; using System.Web.Http.SelfHost; 然后再添加如下代码 using System; using System.Web.Http; using System.Web.Http.SelfHost; namespace WebAPI.Server { class Program {
这篇文章主要是介绍ASP.NET Web API的处理架构:当一个HTTP请求到达直到产生一个请求的过程。 ASP.NET Web API 的处理架构图如下,主要有三层组成:宿主(hosting),消息处理管道(message handler pipeline)和控制器处理(controller handling 宿主(Hosting) 底层负责Web API的宿主,Web API之间的接口和HTTP 处理引擎。一句话,这一层负责创建HttpRequestMessage实例。然后把他们推入到上层的消息处理管道。 目前在ASP.NET Web API里头已经内建的宿主选项有2个:self-hosting 和 web hosting, web hosting也就是宿主在IIS的ASP.net 的处理管道里,Self-hosting Web-hosting 是基于IHttpAsyncHandler, 命名为 HttpControllerHandler, 它把 HttpRequest 转换为HttpRequestMessage.当然Web
4 对第二种方法的错误点分析: 看Web api dll源码中的设置: ?
config.Count().Filter().OrderBy().Expand().Select().MaxTop(null);这样配置使Odata操作符可用(Web Api2的旧版本不必如此设置)。 true)] ,[ODataFormatting],[ODataRouting]这三个特性,由于[ApiExplorerSettings(IgnoreApi = true)] 的影响,在System.Web.Http.Description.ApiDescription
该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。 什么是ASP.NET WEB API? Ans. ASP.NET WEB API 是一个框架用来搭建HTTP服务以供客户端(比如:浏览器,手机,IPhone等)调用。 主要有以下区别: ASP.NET MVC 用来创建web应用返回视图和数据;但是ASP.NET WEB API 是用来创建完整的HTTP服务,仅返回数据无视图返回。 ASP.NET WEB API 路由与 ASP.NET MVC 路由有什么区别? Ans. ASP.NET MVC 与 ASP.NET WEB API 使用路由来监控传入的请求。 不像ASP.NET MVC,Web API仅能接收一个复杂类型作为参数。 Q14. ASP.NET WEB API2中如何启用特性路由? Ans.
ASP.NET Web API 支持 CORS 支持的代码参见 http://code.msdn.microsoft.com/Implementing-CORS-support-418970ee,也可以通过 Nuget 获取WebAPIContrib PM> Install-Package WebAPIContrib 然后给你的Web API的Action 打上标签[EnableCors],例如下面的代码 www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/ Using CORS to access ASP.NET services across domains Cross-Origin Resource Sharing (CORS) and WCF 在asp.net web api中动态修改action的名字 ASP.NET Web API: CORS支持和基于属性的路由改进 Using Cross Origin Resource Sharing (CORS) in ASP.NET Web API
ASP.NET Core 是一个用于构建高性能、可伸缩和现代化 Web 应用程序的开源框架。它支持跨平台运行,并且拥有庞大的社区支持。 本文将带你快速了解 ASP.NET Core 的基础知识,并探讨一些常见的问题以及如何避免这些错误。什么是 ASP.NET Core? 创建一个新的项目打开命令行工具,执行以下命令来创建一个新的 ASP.NET Core Web 应用程序:dotnet new webapp -o MyFirstApp这会创建一个名为 MyFirstApp 的新目录,并在其中初始化一个新的 ASP.NET Core Web 应用程序。 Core Web 开发的一些基础知识,并探讨了一些常见的问题及其解决方法。
版本控制 版本控制的方法有很多,这里提供一种将Odata与普通web api版本控制机制统一的方法,但也可以单独控制,整合控制与单独控制主要的不同是:整合控制通过VersionControllerSelector public static void Register(HttpConfiguration config) { ...... // Web IHttpControllerSelector), new NormalVersionControllerSelector(config)); ...... } } 3 同时支持Odata,与普通Web class WebApiConfig public static void Register(HttpConfiguration config) { // Web
bool ShouldLog(ExceptionLoggerContext context) { if ((context.Exception is System.Web.HttpException / 加载log4net配置文件 LogConfigLoading.Load(AppSettings.Log4netPathForWeb); // 加载Web IExceptionLogger), new GlobalExceptionLogger()); } } 4某些异常无法被捕获的异常 问题描述 对于在服务加载过程中的异常,无法通过异常过滤器,即实现了System.Web.Http.Filters.IExceptionFilter
ASP.NET 2.0 还提供了全功能的应用程序监视和健康监视。这个系统是由一个完全可扩展事件模型和一个能将事件发送到多种接收器的事件引擎组成的。 举例来说,您可以配置您的 ASP.NET 应用程序来每天发送电子邮件,表明服务器正在运行并且包括可用内存的数量。同样,您可以创建一个链接到未处理异常的健康事件。 ASP.NET 2.0 包含了内置的事件,包括心跳、应用程序生存期事件(启动/停止/编译)和错误陷阱事件(未处理异常)。 ASP.NET 2.0 健康监视系统真正强大的功能是,通过 web.config 和 machine.config 文件它是完全可配置的。 配置健康监视 健康监视是在 machine.Config 或 Web.Config 文件中的新的 区域配置的。您可以配置 部分来设置一个周期性报告应用程序状态的 Web 检测信号。
ASP.NET Web API 处理架构中介绍了ASP.NET Web API主要有三层组成:宿主(hosting),消息处理管道(message handler pipeline)和控制器处理(controller handling),本篇文章主要介绍宿主(Hosting):包括ASP.NET经典管道上的Web Hosting和WCF堆栈的自宿主SelfHosting。 ASP.NET经典管道上的Web Hosting 1、ASP.NET 路由使您可以使用不必映射到网站中特定文件的 URL。 由于该 URL 不必映射到文件,因此可以使用对用户操作进行描述因而更易于被用户理解的 URL,路由在ASP.NET Web API上一样有重要的位置。 2、集成Web API,当宿主与ASP.NET,Web API的配置定义在单件的HttpConfiguration对象里,通过静态属性GlobalConfiguration.Configuration访问
现在我们来了解一下如何在使用 ASP.NET Web API 的生产环境中实际实施这些原理,并使用此框架提供的所有可扩展性和功能。 在内核级别,ASP.NET Web API 支持格式化程序的概念。 幸运的是,这种不一致性在 ASP.NET Web API 中已通过引入格式化程序得到解决。 此步骤几乎可以用与在 ASP.NET 或 ASP.NET Web API 自托管中相同的方式来实现,只是所需的 HttpConfiguration 实现不同。 尽管自托管使用 HttpSelfHostConfiguration 实例,ASP.NET 通常使用在 System.Web.Http.GlobalConfiguration.Configuration 您在 RestBugs 中可以找到用于 Razor 的 MediaTypeFormatter 的具体实现,该示例应用程序由 Howard Dierking 创建,演示如何使用 ASP.NET Web API
根据获得的控制器(Controller)名查找Web API中的控制器(controller)。如果没有查找到控制器(controller)名或者匹配到了多个,那么返回错误。 Web API框架认为控制器(controller)的操作(Action)具有如下特征: 1)公有类型的实例方法。 Web API框架仅选择那些匹配请求的HTTP方法的操作,原则为: 1)指定了相应特性的操作,例如使用HttpGet特性的操作,只能匹配Get请求。 具体示例见“ASP.NET Web API编程——版本控制” public class CustomHttpControllerSelector : IHttpControllerSelector { 例:这里引用官网文档的例子 (https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api