miso_soup3 Blog

主に ASP.NET 関連について書いています。

Microsoft.Owin に用意されているエラーページが良い感じだった

f:id:miso_soup3:20131030203501p:plain

これは OWIN に適用した Katana プロジェクトの、エラーページを表示させるミドルウェアを適用させた場合に表示されるエラーページです。
良いデザインだったので、ブログにかきます!

各タブで詳細をチェックできます。↓

f:id:miso_soup3:20131030203535p:plain

ちなみに、↓はエラーページと一緒に用意されている、Welcome ページです。
顔マークをクリックすると、電灯がピカっとし、顔の表情が変わります。おしゃれ。

f:id:miso_soup3:20131030203645p:plain

全く関係ないですけど比較として、↓は、ASP.NET の標準のエラーページ。

f:id:miso_soup3:20131030202606p:plain

(||i =ω=`)ズーン
(||i =ω=`)ズーン

エラーページを表示するミドルウェアを使う方法

(手順は、Getting Started with OWIN and Katana に書いてあります。)
ASP.NET Empty のプロジェクトを用意し、NuGet から「Microsoft.Owin.Diagnostics」をインストします。

まずは、ASP.NET の Empty プロジェクトを作成します。
作成後、NuGet から下の 2 つのパッケージをインストします。

Install-package Microsoft.Owin.Host.SystemWeb.ja
Install-Package Microsoft.Owin.Diagnostics.ja

前者は、IIS で OWIN をホストするためのもの、
後者は、今回のエラーページを表示するミドルウェアのパッケージです。

作成後、下のように OWIN の Startup クラスを用意します。
(VS 2013 だと、追加>新しい項目>OWIN Startup クラス で楽に追加できます)

using Microsoft.Owin;
using Owin;
using System;

[assembly: OwinStartup(typeof(WebApplication18.Startup1))]
namespace WebApplication18
{
	public class Startup1
	{
		public void Configuration(IAppBuilder app)
		{
			app.UseWelcomePage();
			app.UseErrorPage();

			app.Run(context =>
			{
				// New code: Throw an exception for this URI path.
				if (context.Request.Path.Value == "/fail")
				{
					throw new Exception("My Error");
				}

				context.Response.ContentType = "text/plain";
				return context.Response.WriteAsync("Hello, world.");
			});
		}
	}
}

app.UseWelcomePage();
app.UseErrorPage();
が、エラーページと Welcome ページを適用させているコードです。

F5 で起動し、「http://localhost:XXX/」にアクセスすると Welcome ページが、「http://localhost:XXX/fail」にアクセスするとエラーページが表示されます。

"OWIN" がどんな Interface で、"Middleware" はどのようなものか、体感的にわかる例かなーと思います。

補足

OWIN とは、サーバーとアプリケーションを分離、抽象化するためのインターフェイスです。Microsoft ではなく、コミュニティにより立ち上げられたものです。
Katana とは、OWIN に適用するためのパッケージ、ライブラリを提供するプロジェクトです。OWIN とは違い、Microsoft が提供します。Microsoft.Owin 名前空間にあるライブラリは、Katana プロジェクトに含まれます。
Katana では、OWIN に適用するため、実装レベルを4つの層に分けました。Host, Server, Middleware, Application です。この4つの層に OWIN のインターフェイスの線を加えると、”Host, Server ||OWIN|| Middleware, Application”な感じです。
今回紹介したエラーページや Welcome ページのパッケージは、この内の Middleware にあたります。