AllowAnonymous-Attribut funktioniert nicht auf Web-API-controller
Ich habe eine web-Anwendung geschrieben, in ASP.NET MVC 4. Es ist eine intranet-Anwendung, daher bin ich mit der Windows-Authentifizierung die Anonyme Authentifizierung deaktiviert ist). Es stellt einige Web-API-services zu anderen web-Anwendungen.
Das problem ist, dass diese Dienste zugegriffen werden soll, durch anonyme Benutzer aus anderen Anwendungen. Wenn ich rufen Sie den Dienst über den browser funktioniert alles einwandfrei (was offensichtlich ist). Aber wenn ich versuche zu kommunizieren mit dem Dienst über eine andere Anwendung gibt es ein 401.2-Fehler. Die Dekoration der API-controller mit anonymen Attribut nicht helfen. Ich habe versucht, auch im web.config, um die location-element wie im folgenden code:
<location path="Controllers/Api">
<system.web>
<authorization>
<!-- All anonymous users access to the virtual path api -->
<allow users="?" />
</authorization>
</system.web>
<!-- Need to include the security overrides else it will inherit from the root of the application -->
<system.webServer>
<security>
<authentication>
<!-- Need to enable anonymous access and turn off Windows authentication for the virtual path -->
<anonymousAuthentication enabled="true"/>
<windowsAuthentication enabled="false"/>
</authentication>
</security>
</system.webServer>
Aber es hilft nicht, entweder. Im web.config habe ich keine anderen Abschnitten eingestellt (ich meine, ich habe keine Berechtigung block).
Hat jemand eine Idee was Los ist? Warum geht es nicht? Ich wäre für jede information dankbar, wie ich dieses problem lösen kann.
Dies ist meine Web-API-Aktion erstellt für Testzwecke:
[AllowAnonymous]
public class TestController : ApiController
{
public string GetSayHello()
{
return "Hello world";
}
}
Grüße.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein Kollege von mir herausgefunden, dass müssen Sie den Pfad mit der tatsächlichen url.
Ich habe z.B. einen controller namens exampleController, und Sie rufen es wie folgt http://domain.com/api/example/method. Dann fügen Sie das Beispiel unten, um Ihre web.config. Visual studio wird sich beschweren, aber es funktioniert.
Prüfen Sie, dass IIS-Einstellungen sind in der Tat ermöglicht den anonymen Zugriff. Es muss eine Fehlkonfiguration im server. Eine alternative ist die Verwendung Fiddler für die Fehlersuche. Sie alles richtig machen aus der Sicht der Applikation.