我一直在将我的一些Web应用程序整合到一个主要的ASP.NET MVC项目中; 将其中一些分配给单独的区域,以便可以通过子域访问它们.
使用这个(很有用)资源(https://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging),我已经设置了customErrors和httpErrors在Web.config,使自定义错误页面显示.效果很好.
我将在Area/subdomain中使用不同的布局/样式,所以我想知道: 如何让Area显示自己的错误页面?
使用当前设置,所有子域都将显示添加到customErrors和httpErrors部分的主要自定义错误集(403.html,404.html等); 但我更喜欢为某些子域定制错误页面.(例如,如果其中一个区域完全由一个单独的域处理,那么提供常规错误页面是不切实际的.)
更新: 这是根据请求使用代码的方案.感谢Ben Foster,他在这里提供了很好的指导:http://benfoster.io/blog/aspnet-mvc-custom-error-pages 2.我已经为customErrors设置了代码,但是没有相应的httpErrors ...为了简洁起见.
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/500.aspx">
<error statusCode="404" redirect="~/404.aspx" />
<error statusCode="500" redirect="~/500.aspx" />
</customErrors>
</system.web>
<location path="MyArea1">
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Areas/MyArea1/500.aspx">
<error statusCode="404" redirect="~/Areas/MyArea1/404.aspx" />
<error statusCode="500" redirect="~/Areas/MyArea1/500.aspx" />
</customErrors>
</system.web>
</location>
<location path="MyArea2">
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Areas/MyArea2/500.aspx">
<error statusCode="404" redirect="~/Areas/MyArea2/404.aspx" />
<error statusCode="500" redirect="~/Areas/MyArea2/500.aspx" />
</customErrors>
</system.web>
</location> …Run Code Online (Sandbox Code Playgroud) 这是我的Web.config文件:
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="Off" />
<compilation debug="true" strict="false" explicit="true />
<pages>
<namespaces>
<clear />
<add namespace="System" />
<add namespace="System.Collections" />
<add namespace="System.Collections.Generic" />
<add namespace="System.Collections.Specialized" />
<add namespace="System.Configuration" />
<add namespace="System.Text" />
<add namespace="System.Text.RegularExpressions" />
<add namespace="System.Web" />
<add namespace="System.Web.Caching" />
<add namespace="System.Web.SessionState" />
<add namespace="System.Web.Security" />
<add namespace="System.Web.Profile" />
<add namespace="System.Web.UI" />
<add namespace="System.Web.UI.WebControls" />
<add namespace="System.Web.UI.WebControls.WebParts" />
<add namespace="System.Web.UI.HtmlControls" />
</namespaces>
<controls>
<add src ="~/controls/maleBed.ascx" tagPrefix ="mycontrol" tagName ="male"/>
<add src ="~/controls/femaleBed.ascx" tagPrefix ="mycontrol" tagName …Run Code Online (Sandbox Code Playgroud) 使用Cassini但切换到IIS Express.我最初的想法是,<system.web>除了以下内容之外我可以删除所有内容:
<authentication mode="Forms">
<forms loginUrl="/" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
我以前customErrors的设置是这样的:
<customErrors mode="On" defaultRedirect="/ServerError">
<error statusCode="404" redirect="/NotFound" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)
我customErrors切换到IISExpress时删除了这个元素.现在404不再重定向到我漂亮的"NotFound"页面了.
用于我的网站的AppPool Clr4IntegratedAppPool让我知道它不使用Classic.
为什么IISExpress如此依赖于system.webIIS 7.5使用system.webServer?
我最近移动了主机,不得不在IIS中再次设置客户错误.
我可以按如下方式转到IIS Admin和Error Pages:

然后我可以转到自定义错误,并设置如下选项:

这将创建我的web.config文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="ExecuteURL">
<remove statusCode="500" subStatusCode="100" />
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/error_404.asp" responseMode="ExecuteURL" />
<error statusCode="500" prefixLanguageFilePath="" path="/error_500.asp" responseMode="ExecuteURL" />
<error statusCode="500" subStatusCode="100" path="/error_500.asp" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我测试页面时,505错误工作正常,并重定向到右页,但404不重定向并返回标准IIS 404错误.我已确认服务器上的404错误页面位于正确的位置.
我看不出还有什么需要做的.
我想知道对错误消息的一般共识是什么.它们应该有多详细?
我已经处理了一些项目,其中有一个不同的错误消息,用于输入一个太大,太小,有十进制,是一个字符串等的数字.这对用户来说非常好,因为他们确切地知道哪里出了问题,但错误处理代码开始与实际的业务逻辑大小相媲美,并开始开发一些自己的错误.
另一方面,我参与了一个项目,你会得到非常一般的错误,例如
编制失败的原因3
不用说,几乎完全没用,因为原因3表明链接错误.
那么中间地带在哪里?我怎么知道我是否添加了足够描述性的错误消息?我怎么知道用户是否能够理解他们出错的地方?
我在Web配置文件中设置了自定义错误,如下所示:
<customErrors mode="RemoteOnly" defaultRedirect="GenericError.aspx" />
Run Code Online (Sandbox Code Playgroud)
好的和花花公子...我喜欢那种模式="RemoteOnly"促进发展......
对于未处理的异常,我在global.asax中:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Response.Redirect("GenericError.aspx")
End Sub
Run Code Online (Sandbox Code Playgroud)
但是,未处理的异常将转到通用错误页面,而不是开发人员首选的信息黄色死亡屏幕.我可以在global.asax中注释掉重定向,但是我需要记住为生产环境更改它.有没有办法可以检查Application_Error我是否是远程的,以确定是否重定向?
我只想做以下事情:
var defaultRedirectUrl = SomeMethodToGetDefaultRedirect();
Run Code Online (Sandbox Code Playgroud)
当然在web.config我有
<customErrors mode="On" defaultRedirect="~/Error"/>
Run Code Online (Sandbox Code Playgroud)
这该怎么做?
我有一个ServiceStack REST服务,我需要实现自定义错误处理.我已经能够通过将AppHostBase.ServiceExceptionHandler设置为自定义函数来自定义服务错误.
但是,对于其他类型的错误,例如验证错误,这不起作用.我怎样才能涵盖所有案件?
换句话说,我正在努力实现两件事:
我将如何实现这一目标?
我正在尝试传播错误,以便我可以在不影响原始错误的情况下更改错误。
const error = new Error('Error test');
const freeError = {...error};
console.log(error, freeError);Run Code Online (Sandbox Code Playgroud)
但输出是一个空对象{}。我期待freeError至少有一个 message 属性,但没有。
这是 JavaScript 功能的一部分还是我的代码或引擎有问题?
我知道解决这个问题的方法,但它需要额外的工作{...error, message: error.message}。所以,是的,我所需要的只是澄清一下,这样我就可以确定我没有遗漏任何东西。谢谢你。
该页面说:
“如果生成错误,则应将数字添加到 vbObjectError 常量中。例如 Err.Raise Number = vbObjectError + 1000。范围 513 - 65535 可用于用户定义的错误。”
奥莱利还说:
“我们剩下的数字在 vbObjectError + 512 到 vbObjectError + 65535 范围内”
好的,我做到了,但我得到了一个本机错误,而不是自定义错误:
Err.Raise vbObjectError + 515
Automation error
A syntax error occurred trying to evaluate a query string
Run Code Online (Sandbox Code Playgroud)
该网站表示该错误消息的错误代码是
EVENT_E_QUERYSYNTAX As Long = &H80040203
Run Code Online (Sandbox Code Playgroud)
VBA 立即窗格证实了这一点:
?&H80040203
-2147220989 <-- equals vbObjectError + 515
Run Code Online (Sandbox Code Playgroud)
bettersolutions.com 还说:
“范围 513 - 65535 可用于用户定义的错误”
如果我应该添加 vbObjectError,并且 513-65535 可用,那么为什么会给Err.Raise vbObjectError + 515我一个本机 Visual Basic 错误!?
好吧,假设他们的意思是我的自定义代码应该从 513 …
error-handling excel vba custom-errors custom-error-handling
custom-errors ×10
asp.net ×3
web-config ×3
asp.net-mvc ×2
c# ×2
.net ×1
api ×1
excel ×1
exception ×1
global-asax ×1
iis ×1
iis-7.5 ×1
iis-express ×1
javascript ×1
mono ×1
redirect ×1
rest ×1
servicestack ×1
vba ×1