我有以下代碼ASP.NET的ActionResult給出了本地主機和Azure的Web服務不同的響應託管
public ActionResult PerformMagic(string a, string b, int c)
{
try
{
// Some code which always gives an error and go to catch block
}
catch (Exception ex)
{
// ex.Message = "An error occured"
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return this.Content(System.Web.Helpers.Json.Encode(new { error = ex.Message }), "application/json");
}
}
所以調用返回如下的結果,
{
config : {method: "GET", transformRequest: Array(1), transformResponse: Array(1), jsonpCallbackParam: "callback", paramSerializer: ƒ, …}
data :
error : "An error occured"
__proto__ : Object
headers : ƒ (name)
status : 400
statusText : ""
__proto__ : Object
}
所以,我得到的data
在JSON內部,查找error
並將該值(即An error occured
)顯示爲警報。
在本地主機上運行時,這完美的作品,但在部署該天青應用服務,運行,響應來自如下
{
config : {method: "GET", transformRequest: Array(1), transformResponse: Array(1), jsonpCallbackParam: "callback", paramSerializer: ƒ, …}
data : "Bad Request"
headers : ƒ (name)
status : 400
statusText : "Bad Request"
__proto__ : Object
}
這意味着,我不能找到error
內data
。任何人都可以解釋我爲什麼這樣表現?
我的第一個猜想是你在本地啓用調試和部署在Azure中的發行版本不返回異常詳細信息?這是一件好事,因爲例外可能是信息泄漏。 –
@RickvandenBosch即使在調試配置中部署應用程序時也會出現相同的行爲 –