【Owin 学习系列】1. 第一个 Owin 程序

http://www.cnblogs.com/Soulless/p/7249313.html

IIS 中的 Owin

在 IIS 里面部署 Owin,既能得到 Owin 管道模型的灵活性和模块特性,也能很好地利用 IIS 成熟的配置,Owin 程序将会跑在 ASP.NET request 的管道中。

首先建一个空的 Web 项目

【Owin 学习系列】1. 第一个 Owin 程序

【Owin 学习系列】1. 第一个 Owin 程序

添加 Nuget 包 Microsoft.Owin.Host.SystemWeb

【Owin 学习系列】1. 第一个 Owin 程序

添加一个 Startup 类

【Owin 学习系列】1. 第一个 Owin 程序

替换 Startup.cs 的代码

【Owin 学习系列】1. 第一个 Owin 程序
using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(OwinDemo.Startup))]

namespace OwinDemo
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
            app.Run(context=> 
            {
                context.Response.ContentType = "text/plain";
                return context.Response.WriteAsync("Hello, world.");
            });
        }
    }
}
【Owin 学习系列】1. 第一个 Owin 程序

F5 运行查看结果

【Owin 学习系列】1. 第一个 Owin 程序

 

控制台 Self-Host OWIN

在 Self - Host 程序中,你的程序将会使用 HttpListener 创建一个进程来当作 Http Server 。

首先添加一个控制台程序

【Owin 学习系列】1. 第一个 Owin 程序

添加 NuGet 包 Microsoft.Owin.SelfHost

【Owin 学习系列】1. 第一个 Owin 程序

添加一个 Owin Startup.cs 文件

【Owin 学习系列】1. 第一个 Owin 程序

替换 Startup.cs 文件内容

【Owin 学习系列】1. 第一个 Owin 程序
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(OwinConsoleDemo.Startup))]

namespace OwinConsoleDemo
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
            app.Run(context=> 
            {
                context.Response.ContentType = "text/plain";
                return context.Response.WriteAsync("Hello , this is console appliaction from self owin.");
            });
        }
    }
}
【Owin 学习系列】1. 第一个 Owin 程序

修改控制台程序 Main 函数代码

【Owin 学习系列】1. 第一个 Owin 程序
static void Main(string[] args)
    {
        using (Microsoft.Owin.Hosting.WebApp.Start<Startup>("http://localhost:9000"))
        {
            Console.WriteLine("Press [enter] to quit...");
            Console.ReadLine();
        }
    }
【Owin 学习系列】1. 第一个 Owin 程序

F5 运行,然后浏览器访问 http://localhost:9000

【Owin 学习系列】1. 第一个 Owin 程序

 

添加 Owin Diagnostics

Microsoft.Owin.Diagnostics 包包含了一个能捕获未处理的异常的中间件,并且能把错误详情显示在一个 Html 页面中。

首先在 Nuget 包里安装 Microsoft.Owin.Diagnostics

【Owin 学习系列】1. 第一个 Owin 程序

然后替换 Startup.cs 代码

【Owin 学习系列】1. 第一个 Owin 程序
using System;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(OwinDemo.Startup))]

namespace OwinDemo
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseErrorPage();

            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
            app.Run(context=> 
            {
                if((context.Request.Path.ToString() == "/fail"))
                {
                    throw new Exception("This is Owin Diagnostics Test.");
                }

                context.Response.ContentType = "text/plain";
                return context.Response.WriteAsync("Hello, world.");
            });
        }
    }
}
【Owin 学习系列】1. 第一个 Owin 程序

F5 运行,地址栏输入 http://localhost:56764/fail ,就可以在错误页面看到详细的错误信息

【Owin 学习系列】1. 第一个 Owin 程序

 

源代码链接:

链接: http://pan.baidu.com/s/1c2w7Kuk 密码: s6h6

 

参考地址:

https://docs.microsoft.com/zh-cn/aspnet/aspnet/overview/owin-and-katana/getting-started-with-owin-and-katana