在.NET 3.5時,得到的異常信息,我有以下代碼:如何調用JSON Web服務
[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
會被拋出,我可以通過查看error.get_exceptionType()
來發現JavaScript中的異常。這是因爲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被設計爲依賴這種行爲。
我指的是JSON Web服務,而不是SOAP。但是,謝謝! –
是的。對不起,我沒有注意到它不是WCF。 :) – SmartK8
是的,這些天我需要切換到WCF ..這是更強大。我現在只需要這個固定的。 –