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);
        }
    }
}
Mahmoud Moravej
quelle

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?

Mahmoud Moravej
quelle
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));
cal5barton
quelle
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>
Vinh Tran
quelle
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>
Borislav Boyadzhiev
quelle
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.

Sonic Soul
quelle
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>
tomRedox
quelle
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">
M. Abouzeid
quelle