作成者: Steve Smith と Rick Anderson
ASP.NET コア:
- Open Web Interface for .NET (OWIN) をサポートします。
-
Microsoft.Owin.*
(Katana) ライブラリの .NET Core 互換の代替機能を備えている。
OWIN により、Web アプリを Web サーバーから切り離すことが可能になります。 ミドルウェアをパイプラインで使用し、要求と関連する応答を処理するための標準的な方法を定義します。 ASP.NET Core アプリケーションとミドルウェアは、OWIN ベースのアプリケーション、サーバー、およびミドルウェアと相互運用できます。
OWIN には、さまざまなオブジェクト モデルを使用する 2 つのフレームワークを併用できる分離レイヤーがあります。
Microsoft.AspNetCore.Owin
パッケージには 2 つのアダプター実装が用意されています。
- ASP.NET Core から OWIN へ
- OWIN から ASP.NET Core へ
これにより、ASP.NET Core を OWIN 互換のサーバー/ホスト上でホストするか、他の OWIN 互換コンポーネントを ASP.NET Core 上で実行することができます。
注
これらのアダプターを使用すると、パフォーマンスが低下します。 ASP.NET Core コンポーネントのみを使用するアプリケーションでは、Microsoft.AspNetCore.Owin
パッケージまたはアダプターを使用しないでください。
サンプル コードを表示またはダウンロードする (ダウンロード方法)
ASP.NET Core パイプラインで OWIN ミドルウェアを実行する
ASP.NET Core の OWIN のサポートは、Microsoft.AspNetCore.Owin
パッケージの一部として展開されます。 このパッケージをインストールすることで、OWIN のサポートをプロジェクトにインポートできます。
OWIN ミドルウェアは、 インターフェイスと特定のキー (Func<IDictionary<string, object>, Task>
など) の設定を必須とする owin.ResponseBody
に準拠しています。 次の単純な OWIN ミドルウェアを実行すると "Hello World" が表示されます。
public Task OwinHello(IDictionary<string, object> environment)
{
string responseText = "Hello World via OWIN";
byte[] responseBytes = Encoding.UTF8.GetBytes(responseText);
// OWIN Environment Keys: http://owin.org/spec/spec/owin-1.0.0.html
var responseStream = (Stream)environment["owin.ResponseBody"];
var responseHeaders = (IDictionary<string, string[]>)environment["owin.ResponseHeaders"];
responseHeaders["Content-Length"] = new string[] { responseBytes.Length.ToString(CultureInfo.InvariantCulture) };
responseHeaders["Content-Type"] = new string[] { "text/plain" };
return responseStream.WriteAsync(responseBytes, 0, responseBytes.Length);
}
サンプル署名は Task
を返し、OWIN で必要な場合に IDictionary<string, object>
を受け取ります。
次のコードは、OwinHello
拡張メソッドを使用して ASP.NET Core パイプラインに UseOwin
ミドルウェア (上の図) を追加する方法を示しています。
public void Configure(IApplicationBuilder app)
{
app.UseOwin(pipeline =>
{
pipeline(next => OwinHello);
});
}
OWIN パイプライン内で実行する他のアクションを構成できます。
注
応答ヘッダーは、応答ストリームへの最初の書き込み前にのみ変更してください。
注
パフォーマンス上の理由から、UseOwin
を複数回、呼び出すことは避けてください。 OWIN コンポーネントは、グループ化されている場合に最適に動作します。
app.UseOwin(pipeline =>
{
pipeline(next =>
{
return async environment =>
{
// Do something before.
await next(environment);
// Do something after.
};
});
});
OWIN 環境
HttpContext
を使用して OWIN 環境を構築できます。
var environment = new OwinEnvironment(HttpContext);
var features = new OwinFeatureCollection(environment);
OWIN キー
OWIN は、HTTP 要求/応答の交換を通じて情報を伝達するために IDictionary<string,object>
オブジェクトに依存しています。 ASP.NET Core は次のキーを実装しています。 主な仕様、拡張機能、OWIN キー ガイドラインと共通キーを参照してください。
要求データ (OWIN v1.0.0)
鍵 | 値 (型) | 説明 |
---|---|---|
owin。RequestScheme | String |
|
owin。RequestMethod | String |
|
オーウィン。RequestPathBase(リクエストパスベース) | String |
|
owin。RequestPath | String |
|
owin。RequestQueryString | String |
|
owin。RequestProtocol | String |
|
owin。RequestHeaders | IDictionary<string,string[]> |
|
オーウィン。リクエストボディ | Stream |
要求データ (OWIN v1.1.0)
鍵 | 値 (型) | 説明 |
---|---|---|
オーウィン。リクエストID | String |
オプション |
応答データ (OWIN v1.0.0)
鍵 | 値 (型) | 説明 |
---|---|---|
owin。ResponseStatusCode | int |
オプション |
オーウィン。レスポンスリーズンフレーズ | String |
オプション |
owin。ResponseHeaders | IDictionary<string,string[]> |
|
owin。ResponseBody | Stream |
その他のデータ (OWIN v1.0.0)
鍵 | 値 (型) | 説明 |
---|---|---|
owin。CallCancelled | CancellationToken |
|
オーウィン。バージョン | String |
共通キー
鍵 | 値 (型) | 説明 |
---|---|---|
SSLです。クライアント証明書 | X509Certificate |
|
SSLです。LoadClientCertAsync | Func<Task> |
|
サーバー。RemoteIpAddress | String |
|
サーバー。RemotePort | String |
|
サーバー。LocalIpAddress | String |
|
サーバー。ローカルポート | String |
|
サーバー。OnSendingHeaders | Action<Action<object>,object> |
SendFiles v0.3.0
鍵 | 値 (型) | 説明 |
---|---|---|
sendファイル。センダブル | デリゲート署名を表示する | 要求ごと |
不透明 v0.3.0
鍵 | 値 (型) | 説明 |
---|---|---|
オペーク。バージョン | String |
|
オペーク。アップグレード | OpaqueUpgrade |
デリゲート署名を表示する |
オペークストリーム | Stream |
|
オペーク。CallCancelled | CancellationToken |
WebSocket v0.3.0 (英語)
鍵 | 値 (型) | 説明 |
---|---|---|
websocket・バージョン | String |
|
websocketを受け入れる | WebSocketAccept |
デリゲート署名を表示する |
websocket。AcceptAlt | 記述なし | |
websocketです。サブプロトコル | String |
RFC6455セクション 4.2.2 手順 5.5 を参照してください。 |
websocketです。センダブル | WebSocketSendAsync |
デリゲート署名を表示する |
websocketです。ReceiveAsync | WebSocketReceiveAsync |
デリゲート署名を表示する |
websocketです。CloseAsync (英語) | WebSocketCloseAsync |
デリゲート署名を表示する |
websocket。CallCancelled | CancellationToken |
|
websocketです。クライアントクローズステータス | int |
オプション |
websocketです。ClientCloseDescription (クライアントクローズの説明) | String |
オプション |
その他の技術情報
- 翻訳レイヤーでサポートされている OWIN キーについては 、GitHub のソース を参照してください。
- ミドルウェア
- サーバー
ASP.NET Core