当app在远程计算机上时,异常未定义

时间:2016-03-17 16:47:24

标签: c# asp.net angularjs asp.net-mvc exception

当我对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

1 个答案:

答案 0 :(得分:3)

默认情况下,出于安全原因,从远程计算机访问时,不会将完整错误消息发送到客户端,因为它可能会泄露敏感数据。您可以通过将web.config模式设置为customErrors来修改Off以将详细信息返回给远程计算机。但是,如果不首先考虑安全隐患,则不应这样做。

<configuration>
   <system.web>
      <customErrors mode="Off"/>
   </system.web>
</configuration>

更好的做法是向客户端发送一般错误消息&#34;抱歉,发生了意外错误!&#34;并在日志中记录服务器上的实际错误消息。