.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()
ます。これは、Webサービスが例外情報を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全体のほとんどは、この動作に依存するように設計されています。