Der Anforderung ist kein OWIN-Authentifizierungsmanager zugeordnet


70

Nachdem ich versucht habe, owin & AspNet Identity für mein Web-API-Projekt zu aktivieren (in VS 2013 + .Net 4.5.1), wird bei jeder gültigen oder ungültigen Anforderung (Anforderung an keinen vorhandenen Controller) der folgende Fehler angezeigt:

<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
No OWIN authentication manager is associated with the request.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace>
at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.SuppressDefaultAuthenticationChallenges(HttpRequestMessage request) at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<SendAsync>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext()
</StackTrace>
</Error>

Da ich im Debug-Modus eingecheckt habe, wird auch keine Ausnahme behandelt! Außerdem wurde mir klar, dass Configurationin der StartupKlasse nie aufgerufen wird (tatsächlich nie vom Debugger gefangen). Hier ist der Code für den Start:

[assembly: OwinStartup(typeof(bloob.bloob.Startup))]

namespace bloob.bloob
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

Antworten:


98

Ich habe das Problem endlich gefunden! Nachdem ich Zeile für Zeile mit einem neu erstellten Projekt verglichen und keinen Unterschied festgestellt hatte, überprüfte ich die Referenzen für beide Projekte und ja! ... Das ganze Problem war das fehlende Paket:

Microsoft.Owin.Host.SystemWeb

Ich weiß nicht, warum dieses Paket in der Paketinstallationsphase übersehen wird, aber der seltsame Punkt ist, warum keine Build-Ausnahme ausgelöst wurde. oder kein DLL-Referenzfehler?


Ihre Antwort benötigt Details. Wo soll diese Referenz hinzugefügt werden und warum ist der Fehler aufgetreten?
Ahmadalibaloch

1
1- Auf der DLL zu Ihrem MVC-Projekt. 2- Wie ich bereits erwähnte, kenne ich den Grund nicht
Mahmoud Moravej

@ahmadalibaloch das ist Präfekt
Mahmoud Moravej

Danke, es funktioniert, nachdem ich es in Nuget installiert habe, und jetzt kann ich mein Zugriffstoken generieren
jefferyleo

Tools> NuGet Package Manager> Manage NuGet packages for Solution...> Browse> Suche nach und installierenMicrosoft.Owin.Host.SystemWeb
Uzair A.

98

Ich habe das Projekt ursprünglich mit Authentifizierung erstellt, mich dann aber entschieden, es zu deaktivieren. Ich musste dies in der WebApiConfig.csDatei entfernen . Stellen Sie sicher, dass Sie dies haben, wenn Sie die Authentifizierung aktivieren möchten.

        // Web API configuration and services
        // Configure Web API to use only bearer token authentication.
        config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

4
In diesem Codeblock wird die Authentifizierung für WebAPI konfiguriert. Durch Entfernen wird die Authentifizierung deaktiviert.
Cal5barton

Wenn Sie einfach die gesamte Authentifizierung in der Webapi-Pipeline deaktivieren möchten, sollten Sie die drei obigen Zeilen auskommentieren. Das hat für mich funktioniert!
AIDAN CASEY

hmm, ich habe das getan und die web.config-Einstellung key = "owin: AutomaticAppStartup" value = "false" hinzugefügt, aber immer noch diesen Fehler erhalten
Sonic Soul

5
Es ist hilfreich zu wissen, wie die Authentifizierung deaktiviert wird. Dadurch wird der Fehler behoben. Seine Absicht war es jedoch, die Authentifizierung zu aktivieren, sodass die Frage nicht wirklich beantwortet wird.
Todd

8

Mein Fall, es ist seit diesen Einstellungen in web.config fehlgeschlagen. Hoffe das hilft jemandem es zu vermeiden.

<appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
</appSettings>

5

Ich hatte das gleiche Problem. Das Paket wurde nicht im NuGet-Paketmanager angezeigt. Ich habe eine Referenz in packages.config hinzugefügt:

 <package id="Microsoft.Owin.Host.SystemWeb" version="2.1.0" targetFramework="net45" />

Und Referenz in der Projektdatei (xxx.csproj):

 <Reference Include="Microsoft.Owin.Host.SystemWeb">
  <HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.2.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath>
</Reference>

3

Wenn Sie OWIN nicht benötigen, können Sie es einfach deinstallieren.

Eine Möglichkeit, dies zu tun, besteht darin, in Nuget Manager jede OWIN-Bibliothek zu deinstallieren. Die Reihenfolge wird durch ihre Abhängigkeiten bestimmt.

Danach benötigen Sie keinen OWIN-bezogenen Code oder keine Konfiguration. Dies hat für mich am besten funktioniert, da ich Windows Auth verwende.


3

Durch Ändern des owin:AutomaticAppStartupSchlüssels in truein Web.config wurde dies für mich behoben, dh geändert von:

<appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
</appSettings>

dazu:

<appSettings>
    <add key="owin:AutomaticAppStartup" value="true" />
</appSettings>

0

Für das .NET-Framework wird den Modulen in web.config das Attribut runAllManagedModulesForAllRequests hinzugefügt . Auf diese Weise habe ich die Authentifizierung beibehalten.

<modules runAllManagedModulesForAllRequests="true">
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.