Ich habe eine Azure Mobile App mit einigen Methoden, die 500 Fehler generieren, aber keine Ausnahmen in Application Insights aufgezeichnet und keine Ausnahmen in meinem Code geworfen werden. Ich konnte feststellen, dass normale TableController-Methoden problemlos funktionieren, benutzerdefinierte Methoden jedoch nicht. Außerdem kann ich den Code remote debuggen und beobachten, wie er ausgeführt wird, ohne dass Ausnahmen ausgelöst werden. Es sollte auch angemerkt werden, dass ich dieses Problem nicht hatte, als dieses Projekt ein mobiler Dienst war. Hier ist eine Beispiel-Methode, die fehlschlägt:Azure App Service - Einige WebAPI-Methoden werfen OWIN Exception
private readonly MobileServiceContext context; //Autofac injection
private readonly IUserHelper userHelper; //Autofac injection
[HttpGet, Route("api/Site/{id}/Users")]
public async Task<HttpResponseMessage> Users(string id)
{
var userId = await userHelper.GetUserIdAsync(User, Request);
var query = context.UserSiteMaps.Include(x => x.User).Where(map => map.SiteId == id);
var auth = query.FirstOrDefault(x => x.UserId == userId && x.IsAdmin);
if (auth != null)
{
return Request.CreateResponse(HttpStatusCode.OK, query.Select(map => map.User));
}
return Request.CreateUnauthorizedResponse();
}
Das tiefste Fehlerprotokoll, das ich in der Lage gewesen zu erhalten, ist die detaillierte Fehlerseite von IIS:
Modul __DynamicModule_Microsoft.Owin.Host.SystemWeb.OwinHttpModule, Microsoft .Owin.Host.SystemWeb, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35_9de2321b-e781-4017-8ff3-4acd1e48b129 Mitteilung PreExecuteRequestHandler Handler ExtensionlessUrlHandler-Integrated-4.0 Fehlercode
0x00000000
Ich war nicht in der Lage, eine detailliertere Fehlermeldung zu generieren, und ich habe keine Ahnung, was Owin hier verärgert ist, da andere Methoden Rückgabeanträge gut. Mache ich etwas, was ich nicht tun sollte?
Jede Hilfe würde sehr geschätzt werden!
Update: Hier ist die vollständige Fehlermeldung, die ich bekommen konnte.
Ich war auch in der Lage, die Ursache ein wenig einzuengen. Wenn ich das Objekt query.Select(map => map.User)
in der Antwort durch eine einfache Zeichenfolge ersetze, wird diese Zeichenfolge ohne Beanstandung zurückgegeben. Wenn ich jedoch die Antwort selbst stringiere und diese weitergebe, bekomme ich wieder 500s. Könnte es ein Problem mit dem Serializer-Setting geben?
Ich habe detaillierte Protokollierung aktiviert, sowohl in der web.config und im Azure-Portal wie in Ihren Links beschrieben, aber ich konnte noch nie eine tatsächliche Stack-Trace bekommen. Ich werde die ganze Fehlermeldung in meine Frage einfügen. Dieser 500-Fehler ist das einzige, was im Log-Stream auftaucht und ich habe jeden detaillierten Logging-Schalter, den ich finden kann, umgedreht. – DevNoob
Versuchen Sie Visual Studio zu verwenden, um den App Service zu debuggen - Sie können einen Debugger mit dem Cloud Explorer anhängen. –