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.
Open Web Interface for .NET (OWIN) definuje abstrakci mezi webovými servery .NET a webovými aplikacemi. Díky oddělení webového serveru od aplikace usnadňuje OWIN vytváření middlewaru pro vývoj webů .NET. OWIN také usnadňuje přenos webových aplikací na jiné hostitele – například samoobslužné hostování ve službě Windows nebo jiném procesu.
OWIN je specifikace vlastněná komunitou, nikoli implementace. Projekt Katana je sada opensourcových komponent OWIN vyvinutých Microsoftem. Obecný přehled o OWIN a Kataně najdete v tématu Přehled projektu Katana. V tomto článku přejdu rovnou do kódu, abychom mohli začít.
Tento kurz používá Visual Studio 2013 Release Candidate, ale můžete použít i Visual Studio 2012. Několik kroků se v sadě Visual Studio 2012 liší, což si všimněte níže.
Hostování OWIN ve službě IIS
V této části budeme hostovat OWIN ve službě IIS. Tato možnost poskytuje flexibilitu a kompozibilnost kanálu OWIN společně se sadou vyspělých funkcí služby IIS. Při použití této možnosti se aplikace OWIN spustí v kanálu požadavků ASP.NET.
Nejprve vytvořte nový projekt webové aplikace ASP.NET. (V sadě Visual Studio 2012 použijte typ projektu ASP.NET Prázdná webová aplikace.)
V dialogovém okně Nový projekt ASP.NET vyberte šablonu Prázdný .
Přidání balíčků NuGet
Dále přidejte požadované balíčky NuGet. V nabídce Nástroje vyberte Správce balíčků NuGet a pak vyberte Konzola Správce balíčků. V okně Konzola Správce balíčků zadejte následující příkaz:
install-package Microsoft.Owin.Host.SystemWeb –Pre
Přidání třídy po spuštění
Dále přidejte spouštěcí třídu OWIN. V Průzkumník řešení klikněte pravým tlačítkem na projekt, vyberte Přidat a pak vyberte Nová položka. V dialogovém okně Add New Item (Přidat novou položku) vyberte Owin Startup class (Spouštěcí třída Owin). Další informace o konfiguraci spouštěcí třídy najdete v tématu Detekce třídy spouštění OWIN.
Do metody Startup1.Configuration
přidejte následující kód:
public void Configuration(IAppBuilder app)
{
// New code:
app.Run(context =>
{
context.Response.ContentType = "text/plain";
return context.Response.WriteAsync("Hello, world.");
});
}
Tento kód přidá do kanálu OWIN jednoduchou část middlewaru implementovanou jako funkci, která přijímá instanci Microsoft.Owin.IOwinContext . Když server obdrží požadavek HTTP, kanál OWIN vyvolá middleware. Middleware nastaví typ obsahu odpovědi a zapíše text odpovědi.
Poznámka
Šablona třídy OWIN Startup je k dispozici v Visual Studio 2013. Pokud používáte Visual Studio 2012, stačí přidat novou prázdnou třídu s názvem Startup1
a vložit následující kód:
using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(OwinApp.Startup1))]
namespace OwinApp
{
public class Startup1
{
public void Configuration(IAppBuilder app)
{
app.Run(context =>
{
context.Response.ContentType = "text/plain";
return context.Response.WriteAsync("Hello, world.");
});
}
}
}
Spuštění aplikace
Stisknutím klávesy F5 spusťte ladění. Visual Studio otevře okno prohlížeče pro http://localhost:*port*/
. Stránka by měla vypadat takto:
Self-Host OWIN v konzolové aplikaci
Tuto aplikaci můžete snadno převést z hostování služby IIS na vlastní hostování ve vlastním procesu. Při hostování služby IIS služba IIS funguje jako server HTTP i jako proces, který službu hostuje. V případě místního hostování vaše aplikace vytvoří proces a jako server HTTP použije třídu HttpListener .
V sadě Visual Studio vytvořte novou konzolovou aplikaci. V okně Konzola Správce balíčků zadejte následující příkaz:
Install-Package Microsoft.Owin.SelfHost -Pre
Přidejte do Startup1
projektu třídu z 1. části tohoto kurzu. Tuto třídu nemusíte upravovat.
Následujícím způsobem implementujte metodu Main
aplikace.
class Program
{
static void Main(string[] args)
{
using (Microsoft.Owin.Hosting.WebApp.Start<Startup1>("http://localhost:9000"))
{
Console.WriteLine("Press [enter] to quit...");
Console.ReadLine();
}
}
}
Když spustíte konzolovou aplikaci, server začne naslouchat .http://localhost:9000
Pokud na tuto adresu přejdete ve webovém prohlížeči, zobrazí se stránka "Hello world".
Přidání diagnostiky OWIN
Balíček Microsoft.Owin.Diagnostics obsahuje middleware, který zachytává neošetřené výjimky a zobrazuje stránku HTML s podrobnostmi o chybě. Tato stránka funguje podobně jako ASP.NET chybová stránka, která se někdy označuje jako "žlutá obrazovka smrti" (YSOD). Podobně jako v případě YSOD je i chybová stránka Katana užitečná během vývoje, ale doporučuje se ji zakázat v produkčním režimu.
Pokud chcete do projektu nainstalovat diagnostický balíček, zadejte do okna konzoly Správce balíčků následující příkaz:
install-package Microsoft.Owin.Diagnostics –Pre
Změňte Startup1.Configuration
kód v metodě následujícím způsobem:
public void Configuration(IAppBuilder app)
{
// New code: Add the error page middleware to the pipeline.
app.UseErrorPage();
app.Run(context =>
{
// New code: Throw an exception for this URI path.
if (context.Request.Path.Equals(new PathString("/fail")))
{
throw new Exception("Random exception");
}
context.Response.ContentType = "text/plain";
return context.Response.WriteAsync("Hello, world.");
});
}
Teď pomocí kombinace kláves CTRL+F5 spusťte aplikaci bez ladění, aby při výjimce nedošlo k přerušení sady Visual Studio. Aplikace se chová stejně jako předtím, dokud nepřecháte na http://localhost/fail
adresu . V tomto okamžiku aplikace vyvolá výjimku. Middleware chybové stránky výjimku zachytí a zobrazí stránku HTML s informacemi o chybě. Kliknutím na karty můžete zobrazit zásobník, řetězec dotazu, soubory cookie, hlavičku požadavku a proměnné prostředí OWIN.