使用 OWIN 作为 ASP.NET Web API 的宿主 ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动 设备)的 HTTP 服务。...ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。...ASP.NET Web API 是 OWIN 兼容的, 因此可以在 OWIN 服务器上运行。...Newtonsoft.Json Owin 我们的目的是创建 OWIN 兼容的 Web API 应用, 自然要先添加一个 OWIN 约定的 Startup 类, 来配置我们的 OWIN 应用。...(int id) { } } 在 OWIN 环境下运行 Web API OWIN 目前有兩個比较成熟的服务器: Katana 微软的 OWIN 服务器, 如果没有指定 OWIN 服务器, 则作为默认的
OWIN将网页应用程序从网页服务器分离出来,然后将应用程序托管于OWIN的程序而离开IIS之外,关于OWIN的详细资料可参考博客 MVC5 - ASP.NET Identity登录原理 - Claims-based...使用OWIN 自宿主 ASP.NET WebAPI 2可以参考以下2篇文章: Use OWIN to Self-Host ASP.NET Web API 2 Asp.Net Web API 2第十课—...OWIN应用程序都需要一个Startup类作为OWIN管道中的配置类,ASP.NET Web API OWIN Self Hosting 基于约定胜于配置来找到Startup的一个Configuration...UseWebApi 方法通过 ASP.NET Web API 框架 动态的将配置添加到 IAppBuilder。...当调用 UseWebApi 时,ASP.NET Web API 中间件组件被添加到OWIN管道中用所提供的 HTTPConfiguration 对象。
2控制器操作返回值 类型 说明 void 操作返回值为void时,Web API返回空HTTP响应,其状态码为204(无内容) HttpResponseMessage Web api会将此返回值直接转换为...第一种调用HttpResponseMessage的构造函数,实例化一个HttpResponseMessage,并返回。Web API会将其直接转换为HTTP消息。...Web API会调用序列化器将其序列化后写入HTTP响应。...当控制器操作返回此类型时,Web API会调用ExecuteAsync方法创建类型为HttpResponseMessage的实例,然后将这个实例转换为HTTP消息。...2.3返回值为内置类型或自定义类型 返回值为内置类型或自定义类型时,Web API使用格式化器序列化返回值,并将其写入HTTP消息中,响应的状态码为200。
伴随着网络应用程序开发的不断演进,ASP.NET也伴随着产生了新的技术,比如ASP.NET MVC和ASP.NET WEB API。...,这个函数签名被称为应用程序委托(即 AppFunc): using AppFunc = Func, Task>; 基于 OWIN 的应用程序中的每个组件都向服务器提供应用程序委托...或 ASP.NET Web API 中的 HttpRequestMessage/HttpResponseMessage 的协议。...Microsoft.Owin.Security.Cookies – 允许应用程序使用基于cookie进行认证的中间件,类似于ASP.NET中的表单认证方式。...Microsoft.Owin.Security.Jwt – 一组允许应用程序保护及验证JSON Web令牌的中间件。
ASP.NET 和 IIS 我们知道,不管是ASP.NET MVC 还是ASP.NET WEB API 等都是基于ASP.NET Framework的,这种关系从前缀就可以窥倪出来。...而ASP.NET的核心正是System.Web这个程序集,而且System.Web紧耦合IIS,他存在于.NET Framework中。...Web API、SignalR,只要Sever连接成功,Middleware中间件可以是任何实现应用程序委托的组件。...对于Web API、SignalR这类Web Framework中间件而言,我们仅仅是改变了他们的托管方式,而不是取代ASP.NET WEB API、SignalR原先的应用程序开发。...他并不是严格意义上的接口,而是一个委托并且每个OWIN中间件组件必须提供。 ?
Startup 在应用程序中注册一组中间件。 对于每个请求,应用程序都使用现有处理程序集的链接列表的头指针调用各个中间件组件。 每个中间件组件可以向请求处理管道添加一个或多个处理程序。...为此,需要返回对成为列表新头的处理程序的引用。 每个处理程序负责记住并调用列表中的下一个处理程序。...根据需要向此管道添加其他中间件(加载服务、配置设置、静态文件等)。 ASP.NET Core 使用相似的方法,但是不依赖 OWIN 处理条目。...若要获取 ASP.NET Core Startup 和中间件的更深入的参考信息,请参阅 ASP.NET Core 中的 Startup 存储配置 ASP.NET支持存储设置。...为每个值创建一个 cookie。 ASP.NET Core 中不压缩身份验证 cookie 出于安全原因,ASP.NET Core 中不压缩身份验证 cookie。
OWIN (Open Web Interface for .NET): OWIN 是一种定义 Web 服务器和应用程序组件之间的交互的规范 。...例如,ASP.NET MVC, Web Forms, Web Pages, Web API 和 SignalR等。 自定义用户信息 可以很方便的扩展用户信息。比如,添加用户的生日,年龄等。...OWIN 集成 ASP.NET 验证(Authentication)基于 OWIN 中间件,可以在任何 OWIN 的宿主上使用。...ASP.NET Identity 不依赖于System.Web,完全兼容 OWIN 框架,可以被用在任何由OWIN 承载的应用程序。...NuGet 包 ASP.NET Identity 作为一个 NuGet 包进行发布,并且在 Visual Studio 2013 中作为 ASP.NET MVC, Web Forms 和 Web API
虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要求它实现...[本文已经同步到《How ASP.NET Web API Works?》]...HttpController可以视为对ASP.NET Web API的消息处理管道的延续。...通过“ASP.NET Web API标准的“管道式”设计”的介绍我们知道位于管道末端的是一个HttpRoutingDispatcher对象。...调用另一个方法GetFilters可以获取应用到目标HttpController类型上的所有Filter,Filter在ASP.NET Web API中是一个非常重要的概念,同时也是一种常见的扩展方式,
这是微软一贯的作风,如果从开发的便捷性来说的话微软是当之无愧的老大哥,只是鱼和熊掌不能兼得,各种语法糖带来开发的便利势必会牺牲程序运行的性能,这是无可避免的,通用和效率永远是需要程序员去取舍的话题。...扯淡到这就完了,下来就聊聊今天的主角web api,web api 是mvc4.0之后出现的一种技术吧,他的创建和带来的便利我就不介绍了。这边文章主要聊聊,我对web api开发的一些理解。...post请求中参数为name的值。...,这个时候需要使用JObject来处理,代码如下: jQuery.post("/Api/Userinfo/Add/", { mobile: "18049579804", pwd: "123456...WebApiConfig.cs配置为:控制/动作/参数 config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api
如果没有这样一个接口,.NET Web应用程序就要依赖于所运行的具体Web服务器,比如ASP.NET应用程序要依赖于IIS。...有了这个接口,ASP.NET应用程序只需依赖这个抽象接口,不用关心所运行的Web服务器。...所以,OWIN的作用就是通过引入一组抽象接口,解耦了.NET Web应用程序与Web服务器,再次体现了接口的重要性。在软件开发中,每次解耦都是一次很大的进步。...【进一步的理解】 OWIN是对ASP.NET Runtime的抽象。 ASP.NET 5.0是OWIN的一种实现。 通过下面几张图可以更直观地理解: ? ?...OWIN Self-Host ASP.NET Web API 2 首先我们创建一个空的控制台项目: ?
,幸运的是,微软做出了改变,推出了独立的Web Framework ——ASP.NET Web API,他适用于移动互联网并可以快速通过Nuget安装,更为重要的是,他不依赖System.Web,也不依赖...Katana 随着Web API能够运行在自己的轻量级的宿主中,并且越来越多简单、模块化、专一的Framework问世,开发人员有时候不得不启动单独的进程来处理Web应用程序的各种组件(模块)、如静态文件...Katana的基本原则 可移植性:从HostàServeràMiddleware,每个Pipeline中的组件都是可替换的,并且第三方公司和开源项目的Framework都是可以在OWIN Server上运行...WebListener:这是ASP.NET vNext默认的轻量级Server,他目前无法使用在Katana中 3)Middleware Middleware(中间件)位于Host、Server之后,...Middleware可以是简单的Log组件,亦可以为复杂的大型Web Framework,诸如:ASP.NET Web API、Nancy、SignlR等,如下图所示:Pipeline中的Middleware
SOAP 允许我们将我们的服务所需的所有知识放在信息本身中",而"您可以使用 [Web API] 来创建只使用标准HTTP 概念 (URI 和动词)的HTTP服务,和创建使用更高级的 HTTP功能的服务...Old JSON) 服务,你能使用ASP.NET Web API做到这两点。...它是ASP.NET 开源的Web栈的所有部分。 ASP.NET Web API Samples on Codeplex,看到C# 协议对象如何在 JSON 世界和 C# 世界之间轻易来回移动了吗?...JSON.NET 和 ASP.NET Web API 的模型绑定提供了一个开心的介质——一个中间背景——被称为 JToken。...以上内容来自:微小的开心功能第2部分-Visual Studio 2012 中的ASP.NET Web API MVC4 WebAPI(一) MVC4 WebAPI(二)——Web API工作方式 http
ASP.NET 框架上,例如 ASP.NET MVC, Web Forms,Web Pages,ASP.NET Web API 和SignalR ASP.NET Identity 可以用在各种应用程序中...• OWIN 集成 ASP.NET 身份验证现在是基于 OWIN 中间件实现,并且可以在任何基于 OWIN 的宿主上使用。...• NuGet 包 ASP.NET Identity 作为一个 NuGet 包进行发布,并且安装在ASP.NET MVC,Web Forms 和 ASP.NET Web API 项目模板中。...更新Web.config文件 若要将ASP.NET Identity使用在项目里,除了添加相应的包之外,还需要在Web.config中添加如下配置信息: 数据库连接字符串 指定的OWIN Startup...4.创建OWIN Startup 类 最后,通过Katana(OWIN的实现)提供的API,将Middleware 中间件注册到Middleware中,如下所示: public class IdentityConfig
通过IoC的方式实现针对目标HttpController的激活具有重要的意义。[本文已经同步到《How ASP.NET Web API Works?》]...通过《ASP.NET Web API的Controller是如何被创建的?》...我们在一个ASP.NET Web API应用中定义了这个UnityHttpControllerActivator类型。...Web API应用运行之后,我们可以直接在浏览器中输入相应的地址获取所有联系人列表(“/api/contacts”)和针对某个ID为“001”(“/api/contacts/001”)的联系人信息,相应的联系人信息会以如下图所示的形式出现在浏览器上...运行此ASP.NET Web API应用后通过浏览器试图获取联系人信息,我们依然会得到如上图所示的结果。
在ASP.NET CORE MVC中,Web API是其中一个功能子集,可以直接使用MVC的特性及路由等功能。...在成功构建 ASP.NET CORE MVC项目之后,选中解决方案,先填加一个API的文件夹,填加后,选中API文件夹, ?...选择新建项,选择填加Web API控制器,要注意控制器在命名时,是以Controller结尾的,这个不能改,前面的随意,比如,此处以NoteController.cs为例 ?.../note 即可获取note的信息了 当然 也可以访问地址http://127.0.0.1:port/api/note?...pageindex=2 表示获取第二页的信息。 讲得不详细的地方,欢迎在博客下方留言或者访问我的个人网站52dotnet.top与我联系。
类型的对象(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 版权声明 本文为作者原创,版权归作者雪飞鸿所有。
MVC Core 统一架构 ASP.NET Core 将见证 MVC, Web API 和 Web Pages(可能包含)组合在一个架构中,它被称为 ASP.NET MVC Core。...尽管当前发布版本中,还不支持 Web Pages and SignalR。 在之前的 ASP.NET MVC 中, MVC 控制器和 Web API 控制器是不同的。...一个 MVC 控制器使用基类 System.Web.MVC.Controller ,一个 Web API 控制器使用基类 System.Web.Http.ApiController 。...Microsoft 开发了 Katana 作为一个 OWIN 的实现,可以部署 ASP.NET Web API, SignalR 和其他第三方框架,这些框架可以在 IIS 和 IIS Express,...这个管道不再依赖 System.Web,通过降低管道中的开销,你的 app 性能更加优良,更好的调谐 HTTP 协议栈。新的管道基于 Katana 项目经验,同时支持 OWIN。
有了这些数据以后,我们就不需要和.NET的那些对象打交道了,比如说ASP.NET MVC中的HttpContextBase, 以及WEB API 中的HttpRequestMessage和HttpResponseMessage...: 这个中间件就是用来在OWin管道中处理请求的组件,你可以把它想象成一个自定义的httpModule,它会被注册到OWin管道中一起处理http request Application: 这个最好理解...OWin 组件 我们也可能管它叫中间件,它通过暴露一个应用程序代理,也就是接收一个IDictionary,返回一个Task来参与到OWin对request和处理管道中。...Start up 类 每一个OWin的应用程序都需要有一个start up的类,用来声明我们要使用的OWin组件(即中间件)。...不管怎么说,通过这样一种方式,我们就可以将Owin 中间件注册进IIS 集成模式的管道了。
在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号。...在该事件中,请求的URL会依据web.config中的authorization 配置节点进行授权,如下所示授予Kim以及所有Role为Administrator的成员具有访问权限,并且拒绝John以及匿名用户访问...FormsAuthenticationModule 处理,而Katana重写了表单身份验证,所以有必要比较一下传统ASP.NET MVC & Web Form 下表单身份验证与OWIN下表单身份验证的区别...: Features ASP.NET MVC & Web Form Form Authentication OWIN Form Authentication Cookie Authentication...这是一个典型Middleware中间件使用场景,说白了就是去处理Http请求并将数据存储到OWIN环境字典中进行传递。
所以,OWIN的作用就是通过引入一组抽象接口,解耦了.NET Web应用程序与Web服务器,再次体现了接口的重要性。在软件开发中,每次解耦都是一次很大的进步。...【进一步的理解】 OWIN是对ASP.NET Runtime的抽象。 ASP.NET 5.0是OWIN的一种实现 通过下面几张图可以更直观地理解: ? ? ? ?...我对Owin理解 OWIN是一个规范和标准,旨在阐述web服务器和web应用应该如何去解耦,它使得原本不太可能迁移到其他环境的ASP.NET应用变得可能。...System.Web这个程序集似乎在ASP的年代就存在着了,它包含的东西未必每个你都需要,但是每个默认每个请求都会使用这个资源,所以就可能造成一些浪费。...现在的Katanna实现了: Web API SignalR 目前ASP.NET MVC和Web Forms还是只能在System.Web中运行,不过长期来看,这部分很会被解耦,被分离出来。