Das Thema ist selbsterklärend. Ich habe Entwickler- und Produktionsumgebungen. Entwickler env. ist meine localhost Maschine. Ich habe Aktionsmethoden in Contoler, die Antwort-Status-Code auf 500 setzt, wenn etwas schief gelaufen ist (Fehler aufgetreten, oder logische Inkonsistenz) und gibt JSON-Antwort zurück. Meine übliche Methode sieht so aus:IIS-Antworten mit HTML anstelle von JSON auf ASP.NET MVC3
[HttpPost]
public ActionResult DoSomething(int id)
{
try
{
// some useful code
}
catch(Exception ex)
{
Response.StatusCode = 500;
Json(new { message = "error" }, JsonBehaviour.AllowGet)
}
}
Auf der Client-Seite in der Produktion env. Wenn ein solcher Fehler aufgetreten ist, sieht ajax.response wie ein HTML-Code statt der erwarteten JSON aus.
Bedenken Sie:
<div class="content-container">
<fieldset>
<h2>500 - Internal server error.</h2>
<h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3>
</fieldset>
</div>
Filter Kontext ist keine Option. Ich denke, es ist eine Art von IIS oder web.config Problem.
LÖSUNG: Wir entschieden TrySkipIisCustomErrors
in Beginrequest in Global.asax hinzufügen und es wird Probleme in jeder Methode in unserer Anwendung gelöst.
Sie haben Sie 'return' vor dem' Json' Funktionsaufruf? – Zoka
@ Zoka, ja der corse ** Rückkehr ** immer noch da. Vielen Dank. – kokosda