Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Steve Smith a Rick Anderson
ASP.NET Core:
- Podporuje rozhraní Open Web Interface pro .NET (OWIN).
- Má kompatibilní náhrady knihoven
Microsoft.Owin.*(Katana).
OWIN umožňuje oddělení webových aplikací od webových serverů. Definuje standardní způsob použití middlewaru v kanálu ke zpracování požadavků a přidružených odpovědí. ASP.NET základní aplikace a middleware můžou spolupracovat s aplikacemi, servery a middlewarem založenými na OWIN.
OWIN poskytuje oddělenou vrstvu, která umožňuje použití dvou architektur s různorodými objektovými modely. Balíček Microsoft.AspNetCore.Owin poskytuje dvě implementace adaptérů:
- ASP.NET Core do OWIN
- OWIN k ASP.NET Core
To umožňuje hostování ASP.NET Core nad serverem nebo hostitelem kompatibilním s OWIN nebo s jinými kompatibilními komponentami OWIN nad ASP.NET Core.
Note
Používání těchto adaptérů má náklady na výkon. Aplikace používající pouze ASP.NET základní komponenty by neměly používat Microsoft.AspNetCore.Owin balíčky ani adaptéry.
Zobrazení nebo stažení ukázkového kódu (postup stažení)
Spuštění middlewaru OWIN v kanálu ASP.NET Core
ASP.NET podpora OWIN core se nasadí jako součást Microsoft.AspNetCore.Owin balíčku. Podporu OWIN můžete do projektu importovat instalací tohoto balíčku.
Middleware OWIN odpovídá specifikaci OWIN, která vyžaduje Func<IDictionary<string, object>, Task> rozhraní, a konkrétní klíče se nastavují (například owin.ResponseBody). Následující jednoduchý middleware OWIN zobrazí "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);
}
Ukázkový podpis vrátí Task hodnotu a přijme ji IDictionary<string, object> podle potřeby OWIN.
Následující kód ukazuje, jak pomocí metody rozšíření přidat OwinHello middleware (viz výše) do kanálu UseOwin ASP.NET Core.
public void Configure(IApplicationBuilder app)
{
app.UseOwin(pipeline =>
{
pipeline(next => OwinHello);
});
}
Můžete nakonfigurovat další akce, které se mají provést v rámci kanálu OWIN.
Note
Hlavičky odpovědi by se měly upravit pouze před prvním zápisem do streamu odpovědi.
Note
Z důvodů výkonu UseOwin se nedoporučuje více volání. Komponenty OWIN budou fungovat nejlépe, pokud jsou seskupené dohromady.
app.UseOwin(pipeline =>
{
pipeline(next =>
{
return async environment =>
{
// Do something before.
await next(environment);
// Do something after.
};
});
});
Prostředí OWIN
Můžete vytvořit prostředí OWIN pomocí .HttpContext
var environment = new OwinEnvironment(HttpContext);
var features = new OwinFeatureCollection(environment);
Klíče OWIN
OWIN závisí na objektu IDictionary<string,object> , který komunikuje s informacemi v rámci výměny požadavků a odpovědí HTTP. ASP.NET Core implementuje níže uvedené klíče.
Viz primární specifikace, rozšíření a pokyny pro klíče OWIN a běžné klíče.
Vyžádání dat (OWIN v1.0.0)
| Key | Hodnota (typ) | Description |
|---|---|---|
| owin.RequestScheme | String |
|
| owin.RequestMethod | String |
|
| owin.RequestPathBase | String |
|
| owin.RequestPath | String |
|
| owin.RequestQueryString | String |
|
| owin.RequestProtocol | String |
|
| owin.RequestHeaders | IDictionary<string,string[]> |
|
| owin.RequestBody | Stream |
Vyžádání dat (OWIN v1.1.0)
| Key | Hodnota (typ) | Description |
|---|---|---|
| owin.RequestId | String |
Optional |
Data odpovědi (OWIN v1.0.0)
| Key | Hodnota (typ) | Description |
|---|---|---|
| owin.ResponseStatusCode | int |
Optional |
| owin.ResponseReasonPhrase | String |
Optional |
| owin.ResponseHeaders | IDictionary<string,string[]> |
|
| owin.ResponseBody | Stream |
Další data (OWIN v1.0.0)
| Key | Hodnota (typ) | Description |
|---|---|---|
| owin.CallCancelled | CancellationToken |
|
| owin.Version | String |
Běžné klíče
| Key | Hodnota (typ) | Description |
|---|---|---|
| ssl.ClientCertificate | X509Certificate |
|
| ssl.LoadClientCertAsync | Func<Task> |
|
| server.RemoteIpAddress | String |
|
| server.RemotePort | String |
|
| server.LocalIpAddress | String |
|
| server.LocalPort | String |
|
| server.OnSendingHeaders | Action<Action<object>,object> |
SendFiles v0.3.0
| Key | Hodnota (typ) | Description |
|---|---|---|
| sendfile.SendAsync | Zobrazit podpis delegáta | Na žádost |
Neprůhlený v0.3.0
| Key | Hodnota (typ) | Description |
|---|---|---|
| opaque.Version | String |
|
| opaque.Upgrade | OpaqueUpgrade |
Zobrazit podpis delegáta |
| opaque.Stream | Stream |
|
| opaque.CallCancelled | CancellationToken |
WebSocket v0.3.0
| Key | Hodnota (typ) | Description |
|---|---|---|
| websocket.Version | String |
|
| websocket.Accept | WebSocketAccept |
Zobrazit podpis delegáta |
| websocket.AcceptAlt | Non-spec | |
| websocket.SubProtocol | String |
Viz RFC6455 oddíl 4.2.2 Krok 5.5 |
| websocket.SendAsync | WebSocketSendAsync |
Zobrazit podpis delegáta |
| websocket.ReceiveAsync | WebSocketReceiveAsync |
Zobrazit podpis delegáta |
| websocket.CloseAsync | WebSocketCloseAsync |
Zobrazit podpis delegáta |
| websocket.CallCancelled | CancellationToken |
|
| websocket.ClientCloseStatus | int |
Optional |
| websocket.ClientCloseDescription | String |
Optional |
Dodatečné zdroje
- Podívejte se na zdroj na GitHubu pro klíče OWIN podporované ve vrstvě překladu.
- Middleware
- Servers