1. 程式人生 > >【Owin 學習系列】1. 第一個 Owin 程序

【Owin 學習系列】1. 第一個 Owin 程序

進程 task reading 地址 [] 地址欄 urn rtu ()

IIS 中的 Owin

在 IIS 裏面部署 Owin,既能得到 Owin 管道模型的靈活性和模塊特性,也能很好地利用 IIS 成熟的配置,Owin 程序將會跑在 ASP.NET request 的管道中。

首先建一個空的 Web 項目

技術分享

技術分享

添加 Nuget 包 Microsoft.Owin.Host.SystemWeb

技術分享

添加一個 Startup 類

技術分享

替換 Startup.cs 的代碼

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."); }); } } }

F5 運行查看結果

技術分享

控制臺 Self-Host OWIN

在 Self - Host 程序中,你的程序將會使用 HttpListener 創建一個進程來當作 Http Server 。

首先添加一個控制臺程序

技術分享

添加 NuGet 包 Microsoft.Owin.SelfHost

技術分享

添加一個 Owin Startup.cs 文件

技術分享

替換 Startup.cs 文件內容

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.");
            });
        }
    }
}

修改控制臺程序 Main 函數代碼

static void Main(string[] args)
    {
        using (Microsoft.Owin.Hosting.WebApp.Start<Startup>("http://localhost:9000"))
        {
            Console.WriteLine("Press [enter] to quit...");
            Console.ReadLine();
        }
    }

F5 運行,然後瀏覽器訪問 http://localhost:9000

技術分享

添加 Owin Diagnostics

Microsoft.Owin.Diagnostics 包包含了一個能捕獲未處理的異常的中間件,並且能把錯誤詳情顯示在一個 Html 頁面中。

首先在 Nuget 包裏安裝 Microsoft.Owin.Diagnostics

技術分享

然後替換 Startup.cs 代碼

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.");
            });
        }
    }
}

F5 運行,地址欄輸入 http://localhost:56764/fail ,就可以在錯誤頁面看到詳細的錯誤信息

技術分享

源代碼鏈接:

鏈接: 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

【Owin 學習系列】1. 第一個 Owin 程序