Как получить информацию об исключении при вызове веб-службы JSON

В .NET 3.5 у меня был следующий код:

[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();
   }
}

Когда я позвонил бы, если я передал неверное имя пользователя и пароль,InvalidUsernameOrPasswordException будет брошен, и я мог бы поймать исключение в Javascript, посмотрев наerror.get_exceptionType(), Это потому, что веб-сервис будет сериализовать информацию об исключениях в JSON.

Однако, как только я обновил до .NET 4.5, это сломалось. Теперь, когда я передаю неверное имя пользователя и пароль, я получаю ответ HTTP:

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":""}

По сути, тип исключения теряется и заменяется общим сообщением об ошибке.

Что заставило это поведение измениться, и есть ли способ вернуть информацию об исключениях в JSON? Практически весь мой API рассчитан на такое поведение.

Ответы на вопрос(2)

Ваш ответ на вопрос