2015-05-07 45 views
1

我有一個應用程序使用角色運行在Windows Server 2008 R2的IIS下與asp.net MVC後端。來自MVC應用程序的錯誤響應通過角度http發佈

如果服務器上發生錯誤時,返回錯誤數據I執行以下操作:

Response.StatusCode = (int)HttpStatusCode.InternalServerError; 
return Json(response); 

的效果是,一個JSON包被髮送回角呼叫者,和錯誤處理程序被稱爲接收JSON包

this.http.post(workUrl, selezione)
.success((data: SettoriProgettoResponse, status) => {
deferred.resolve(data);
}).error((error: string[]) => {
deferred.reject(error);
});

由於某種原因,過去幾天IIS停止發回JSON,而是發送標準的IIS錯誤頁面。

如何恢復以前的行爲?

+0

你可以添加你的代碼..你是在做什麼post調用 –

+0

我剛剛添加完整的客戶端代碼,服務器端我設置狀態碼並返回json有效載荷,客戶端的.error被調用接收正確的json有效載荷。現在我收到IIS錯誤頁面的html –

回答

0

我在這裏發現了我的問題的解決方案。

https://serverfault.com/questions/123729/iis-is-overriding-my-response-content-if-i-manually-set-the-response-statuscode

添加此到web.config

<system.webServer> 
    <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"/> 
    .... snipped other IIS relevant elements ... 
</system.webServer> 

重新啓動按預期運行的程序。
老實說,我不明白爲什麼到目前爲止工作正常,沒有這個設置,但現在看起來沒問題。