我想向用户显示一些自定义错误消息。因此,当他们说输入错误的用户名/密码组合时,我可能会在我的代码中执行此操作:
Response.StatusCode = 400;
return Json("Invalid username or password");
这在我的本地计算机上运行正常。我一直在部署到一个Web主机,这些消息被服务器覆盖,以便它们全部出现:
由于内部服务器错误,页面无法显示 发生。
服务器显然试图保护我不会泄露有关出错的敏感信息,但我确实希望这个错误能够通过并被用户看到(实际上,我的代码解析然后显示)。
我认为web.config中有一些东西我可以做这个工作,但到目前为止我尝试的一切都没有用。有什么想法吗?
我现在拥有web.config的相关部分:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="PassThrough">
</httpErrors>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
etc.
答案 0 :(得分:2)
默认情况下,IIS会将某些HTTP状态代码隐藏起来并替换为它。但是,可以使用以下行进行配置:
<system.webServer>
<httpErrors errorMode="Detailed"/>
这将允许您在响应中传递自定义消息,并在完成AJAX调用时在客户端读取它。
答案 1 :(得分:0)
为了处理每个Http错误代码,您需要在web.config文件中添加特定的映射
<customErrors mode="On/RemoteOnly" >
<error statusCode="400" redirect="My400View" />
<error statusCode="404" redirect="My404iew" />
<error statusCode="500" redirect="My500View" />
</customErrors>
答案 2 :(得分:0)
对此的解决方案最终取消了&lt; httpErrors&gt;完全来自web.config的元素。即使将其设置为默认选项(如http://www.iis.net/configreference/system.webserver/httperrors所示)也不起作用,因此我有点困惑为什么删除它有效。
<system.webServer>
**Remove <httpErrors> !**
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>