当我对API进行$ http调用,并且它从我的MVC控制器抛出异常时,我使用
记录返回到我的Angular代码的异常消息ubuf_stdin = os.fdopen(sys.stdin.detach().fileno(), 'rb', buffering=0)
这样可以显示自定义异常消息。但是,当我在IIS上的远程服务器上部署应用程序时,抛出异常时,.then(function success(response){ // success },
function error(response){ console.log(JSON.stringify(response);};})
参数始终为:
response
...基本上,它不包含自定义的Exception消息,它总是只有“发生错误。”
这可能是一个路由错误,但是该例外实际上并没有到达我的Angular端吗?我背后的逻辑是因为远程URL看起来像:
{"data":{"Message":"An error has occurred."},"status":500,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":...,"headers":{"Accept":"application/json, text/plain, */*"}},"statusText":"Internal Server Error"}
,在我的本地,website.com/extension
答案 0 :(得分:3)
默认情况下,出于安全原因,从远程计算机访问时,不会将完整错误消息发送到客户端,因为它可能会泄露敏感数据。您可以通过将web.config
模式设置为customErrors
来修改Off
以将详细信息返回给远程计算机。但是,如果不首先考虑安全隐患,则不应这样做。
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
更好的做法是向客户端发送一般错误消息&#34;抱歉,发生了意外错误!&#34;并在日志中记录服务器上的实际错误消息。