OWIN和Katana入门

------转载:http://www.nmtree.net/2014/06/13/getting-started-with-owin-and-katana.html

Open Web Interface for .NET (OWIN)定义了.NET web服务器和web应用程序间的抽象。OWIN通过将web服务器从应用程序解耦,使得为.NET web开发创建中间件和移植web应用程序到其他托管——比如,Window服务或其他进程的自我托管——变得更加容易。

OWIN是一个社区所有的规范,而非实现。Katana项目是由微软开发的开源OWIN组件集合。关于OWIN和Katana的介绍,请参阅Katana项目概述

IIS托管OWIN

本节,我们将OWIN托管在IIS中。使用此选项,OWIN应用程序运行在ASP.NET请求管道中。

首先,新建一个新的ASP.NET Web Application项目。

20140613211121

新建ASP.NET项目对话框中,选择Empty模板。

20140613220531

添加NuGet程序包

工具菜单,选择NuGet程序包管理器,然后选择程序包管理器控制台。在程序包管理器控制台窗口中,键入下面的命令:

1
Install-Package Microsoft.Owin.Host.SystemWeb -Pre

20140613221056

添加Startup类

接下来,添加一个OWIN startup类。在解决方案资源管理器中,右击项目,选择添加,然后选择新建项。在新建项对话框中,选择Owin Startup类。关于配置startup类的更多信息,参与OWIN启动类检测

20140613212330

在Startup.Configuration方法中添加如下代码:

1
2
3
4
5
6
7
8
9
public void Configuration(IAppBuilder app)
{
     // 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888
     app.Run(context =>
     {
         context.Response.ContentType =  "text/plain" ;
         return context.Response.WriteAsync( "Hello, world." );
     });
}

这段代码添加一个简单的中间件到OWIN管道,实现为一个接收Microsoft.Owin.IOwinContext实例的功能。当服务器接收到一个HTTP请求时,OWIN管道调用中间件。中间件设置响应的内容类型并将内容写入响应的body中。

运行程序

按F5启动调试。Visual Studio会打开一个链接到http://localhost:port/的浏览器窗口。页面看起来如下所示:

20140613221812

控制台应用程序中自我托管OWIN

从IIS托管转换到自定义进程的自我托管很容易。对于IIS托管,IIS既充当HTTP服务器又充当托管在服务器中的进程。而对于自我托管,应用程序创建进程,然后使用HttpListener作为HTTP服务器。

在Visual Studio中,创建一个控制台应用程序,在程序包管理器控制台中,键入以下命令

1
Install-Package Microsoft.Owin.SelfHost -Pre

将前面添加的Startup类添加到本项目,不需要修改代码。

在Main方法中实现如下代码:

1
2
3
4
5
6
7
8
static void Main( string [] args)
{
     using (WebApp.Start<Startup>( "http://localhost:5000" ))
     {
         Console.WriteLine( "Press [enter] to quit..." );
         Console.ReadLine();
     }
}

当运行控制台程序时,服务器开始监听http://localhost:5000。如果在浏览器导航到该地址,就会看“Hello world”页面。

20140613223420

添加OWIN诊断

Microsoft.Owin.Diagnostics程序包包含捕获未处理异常并显示一个带有详细错误的HTML页面的中间件。这个页面的功能类似于ASP.NET的错误页面(有时被称为yellow screen of death  YSOD)。类似于YSOD,Katana错误页在开发阶段很有用,但是在生产环境下禁用掉是一个好的实践。

在程序包管理器控制台键入下面的命令安装Diagnostics程序包:

1
Install-Package Microsoft.Owin.Diagnostics –Pre

如下修改Startup.Configuration方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void Configuration(IAppBuilder app)
{
     //添加错误页中间节到管道
     app.UseErrorPage();
     app.Run(context =>
     {
         if (context.Request.Path.Value ==  "/fail" )
         {
             throw new Exception( "Random exception" );
         }
 
         context.Response.ContentType =  "text/plain" ;
         return context.Response.WriteAsync( "Hello, world." );
     });
}

使用CTRL+F5不调试运行程序。程序运行结果和之前一样,但是当导航到http://localhost:62222/fail时程序就会抛出异常。错误页中间件捕获到异常,并显示一个带有错误信息的HTML页。在错误页中,可以点击tab查看stack,query string,cookies,request header和OWIN环境变量信息。

20140613225524

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值