2014-08-31 38 views
5

Ho cercato e google su come cose come OWIN si aggancia alle attività ASP.NET.Come si aggancia OWIN all'avvio di ASP.NET

So che se creiamo un OWIN ospitato autonomamente, lo chiameremo manualmente ed è chiaro che stiamo chiamando OWIN per farlo funzionare.

Tuttavia, vedo che OWIN viene richiamato automaticamente all'avvio di ASP.NET senza la necessità di chiamare webapp start o altro. OWIN si collega ad ASP.NET e agisce da intercettore su ogni richiesta.

Il mio esempio sarebbe signalr, chiamiamo la mappatura di signalr nel metodo di configurazione OWIN. Tuttavia, non vedo nulla che possa chiamare il metodo di configurazione OWIN. Ma signalr è già mappato e funziona.

In che modo OWIN si aggancia alle attività ASP.NET? OWIN registra gli hook o ASP.NET che ora riconoscono OWIN e chiamano automaticamente?

risposta

4

si avrà una linea simile come questo sul vostro progetto:

[assembly: OwinStartup(typeof(MyApp.Security.Authentication.Startup))] 

La linea di cui sopra informa .NET la classe e metodo che verrà richiamato all'inizio.

alternativa è possibile configurare l'avvio in WebConfig

<appSettings> 
... 
<add key="owin:appStartup" value="MyApp.Security.Authentication.Startup" /> 
... 
</appSettings> 

Da quel punto, è possibile inserire i componenti Owin, così come tutti gli elementi di configurazione che normalmente luogo nel gestore eventi Global.asax Application_Start.

Delete Global.asax Classe: Se si utilizza OWIN, non c'è alcuna necessità di utilizzare classe Gobal.asax e accendere l'evento Application_Start, quindi è possibile eliminarlo.

Codice esempio di Startup.cs

using System.Web.Http; 
using Microsoft.Owin; 
using Owin; 

[assembly: OwinStartup(typeof(MyApp.Security.Authentication.Startup))] 
namespace MyApp.Security.Authentication 
{ 
    public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      HttpConfiguration config = new HttpConfiguration(); 
      WebApiConfig.Register(config); 
      app.UseWebApi(config); 
     } 
    } 
} 

Modificato:

OWIN utilizza una classe di avvio in cui è possibile specificare i componenti che si desidera includere in cantiere applicazione. Se si guarda lo Katana source code, l'host Katana SystemWeb utilizza lo PreApplicationStartMethodAttribute per collegarsi all'avvio dell'applicazione. PreApplicationStartMethodAttribute, introdotto in .NET 4, consente di eseguire il codice in modo anticipato nella pipeline ASP.NET all'avvio dell'applicazione. Intendo molto presto, anche prima di Application_Start.

Controllare la sezione "Rilevamento della classe di avvio Owin" in questo link e questo link su PreApplicationStartMethodAttribute.

+1

Quindi, ASP.NET è stato aggiornato in modo da cercare l'avvio OWIN all'inizio? È possibile per me creare un framework simile a OWIN che possa agganciare le attività ASP.NET senza essere chiamato manualmente? –

+2

Come ho capito, il pacchetto NuGet "Microsoft.Owin.Host.SystemWeb" è il responsabile di questa procedura di avvio. Questo pacchetto è necessario per il rilevamento dell'avvio nell'applicazione ospitata da IIS: http://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection. –

+1

La mia domanda è come l'hanno fatto, come Microsoft.Owin.Host.SystemWeb come hai detto, agganciare all'avvio di IIS e alle attività ASP.NET. –

Problemi correlati