2015-07-16 12 views
6

Ich fühle ich habe das gleiche Problem wie described in this thread. I arbeite an einer ASP.NET MVC-Webanwendung, die lokal einwandfrei ausgeführt wird. Wenn in unserem Windows Server 2008 mit IIS7 eingesetzt, jedoch bekomme ich folgende Fehlermeldung beim Versuch anzumelden: die Linie, die diesen Fehler auslöstASP.NET MVC: Nein owin.Environment

No owin.Environment item was found in the context.

Dies ist:

return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>(); 

ich alles versucht habe, Ich könnte finden:

  1. Hinzufügen <add key="owin:AppStartup" value="My_App.Startup,My-App"/> toe der web.config. Meine Anwendung hat einen Bindestrich in ihrem Namen, aber das sollte kein Problem sein, oder?
  2. Hinzufügen <add key="owin:AutomaticAppStartup" value="true"/> zu web.config.
  3. Hinzufügen <modules runAllManagedModulesForAllRequests="true"> zu der web.config.
  4. Ich verifiziert, dass Microsoft.Owin.Host.SystemWeb installiert ist und in der bin-Ordner.
  5. Löschen der ASP.net-temporären Dateien.
  6. Die App-Pool wird auf "integriert"

Es funktioniert lokal gut. Was fehlt mir?

Dies ist kein Duplikat von this Thread. Ich habe die Lösung von dort aus versucht (siehe meine # 1) um keinen Erfolg zu haben. Außerdem habe ich den Namensraum nicht geändert.

bearbeiten Eine Lösung ist die OwinHttpHandler explizit in der web.config zu registrieren, aber das hatte einige seltsame Nebenwirkungen (meine CSS und JavaScript werden nicht mehr geladen, Stand 404?):

<handlers> 
    <add name="OWIN" path="*" verb="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler" /> 
</handlers> 
+0

Sieht aus wie ein Duplikat: http: // stackoverflow.com/questions/18232549/no-owin-environment-article-was-found-in-the-context – morganpdx

+0

Es ist kein Duplikat, weil die dort angegebene Lösung für mich nicht funktioniert hat - ich habe es bereits versucht (siehe Punkt 1) und # 4) – peter

+0

Wie ist der App-Pool konfiguriert? –

Antwort

0

Namenskonvention:Katana sucht in einem Namespace nach einer Klasse namens Startup, die dem Assemblynamen oder dem globalen Namespace entspricht.

OwinStartup Attribut:Dies ist der Ansatz der meisten Entwickler nehmen die Startklasse angeben. Mit dem folgenden Attribut wird die Startklasse für die TestStartup-Klasse im StartupDemo-Namespace festgelegt.

[assembly: OwinStartup(typeof(StartupDemo.TestStartup))] 

<appSettings> 
    <add key="owin:appStartup" value="StartupDemo.ProductionStartup" /> 
</appSettings> 

Der folgende Schlüssel, die auch verwendet werden können, die Startklasse und Montage explizit angibt:

<add key="owin:appStartup" value="StartupDemo.ProductionStartup, StartupDemo" /> 


<appSettings> 
    <add key="owin:appStartup" value="ProductionConfiguration" />  
</appSettings> 

Die obige Markup mit dem folgenden OwinStartup Attribut verwendet werden müssen, die einen Namen ein und Ursachen gibt die ProductionStartup2-Klasse zum Ausführen.

[assembly: OwinStartup("ProductionConfiguration", typeof(StartupDemo.ProductionStartup2))] 

namespace StartupDemo 
{ 
    public class ProductionStartup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      app.Run(context => 
      { 
       string t = DateTime.Now.Millisecond.ToString(); 
       return context.Response.WriteAsync(t + " Production OWIN App"); 
      }); 
     } 
    } 
    public class ProductionStartup2 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      app.Run(context => 
      { 
       string t = DateTime.Now.Millisecond.ToString(); 
       return context.Response.WriteAsync(t + " 2nd Production OWIN App"); 
      }); 
     } 
    } 
}