So erhalten Sie Ausnahmeinformationen, wenn Sie den JSON-Webdienst aufrufen

In .NET 3.5 hatte ich den folgenden Code:

[WebService(Namespace = "http://kitchenpc.com/schemas/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class KitchenPC : System.Web.Services.WebService
{
   [WebMethod]
   public LogonResult Logon(string username, string password)
   {
      //If username and password are not valid...
      throw new InvalidUsernameOrPasswordException();
   }
}

Wenn ich es anrufen würde, wenn ich einen ungültigen Benutzernamen und ein ungültiges Passwort übergeben würde, würde dasInvalidUsernameOrPasswordException würde geworfen werden und ich könnte die Ausnahme in Javascript durch einen Blick auf fangenerror.get_exceptionType(). Dies liegt daran, dass der Webdienst die Ausnahmeinformationen in JSON serialisiert.

Nachdem ich jedoch auf .NET 4.5 aktualisiert hatte, brach dies ab. Wenn ich jetzt einen ungültigen Benutzernamen und ein ungültiges Kennwort übergebe, erhalte ich die HTTP-Antwort:

HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
jsonerror: true
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sat, 24 Nov 2012 22:42:33 GMT
Content-Length: 91

{"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}

Grundsätzlich geht der Ausnahmetyp verloren und wird durch eine generische Fehlermeldung ersetzt.

Was hat zu einer Änderung dieses Verhaltens geführt und gibt es noch eine Möglichkeit, Ausnahmeinformationen in JSON zurückzugeben? So ziemlich meine gesamte API ist darauf ausgelegt, sich auf dieses Verhalten zu stützen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage