Die innere handler zugeordnet wurde, mit WebApi Delegieren handler
Ich habe ein problem mit WebApi eine Ausnahme hier in meinem code:
public class WebApiAuthenticationHandler : DelegatingHandler
{
private const string AuthToken = "AUTH-TOKEN";
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
var requestAuthTokenList = GetRequestAuthTokens(request);
if (ValidAuthorization(requestAuthTokenList))
{
//EXCEPTION is occuring here!....
return base.SendAsync(request, cancellationToken);
}
/*
** This will make the whole API protected by the API token.
** To only protect parts of the API then mark controllers/methods
** with the Authorize attribute and always return this:
**
** return base.SendAsync(request, cancellationToken);
*/
return Task<HttpResponseMessage>.Factory.StartNew(
() =>
{
var resp = new HttpResponseMessage(HttpStatusCode.Unauthorized)
{
Content = new StringContent("Authorization failed")
};
//var resp = new HttpResponseMessage(HttpStatusCode.Unauthorized);
//resp.Headers.Add(SuppressFormsAuthenticationRedirectModule.SuppressFormsHeaderName,"true");
return resp;
});
}
Ausnahme ist passiert auf der Linie:
base.SendAsync(request, cancellationToken);
Ich habe keine Ahnung, wie man dieses Problem beheben. Ich habe Folgendes in meiner route-Tabelle:
routes.MapHttpRoute("NoAuthRequiredApi", "api/auth/", new { Controller = "Auth" });
routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional }, null, new WebApiAuthenticationHandler());
Die route in diesem Fall auf die DefaultApi route. Jede Hilfe sehr geschätzt....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand die Antwort hier und ein Beispiel-handler hier.
Müssen Sie die InnerHandler Sie möchten, dass die Anfrage weitergegeben.
Einfach fügen Sie diese zu Ihrem Konstruktor:
Auf und übergeben Sie eine Referenz auf GlobalConfiguration, wenn eine neue Instanz zu erstellen:
Manchmal, Sie sollten überprüfen Sie die Rest-Url, die Sie anfordern, wenn es wirklich existiert im controller. Habe ich jemals erlebt, diese Art von Ausnahme, die ausgelöst wurde durch die falsche URL übereinstimmen. danke.