标签: custom-errors

ASP.NET MVC区域可以显示自己的错误页面集吗?

我一直在将我的一些Web应用程序整合到一个主要的ASP.NET MVC项目中; 将其中一些分配给单独的区域,以便可以通过子域访问它们.

使用这个(很有用)资源(https://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging),我已经设置了customErrorshttpErrorsWeb.config,使自定义错误页面显示.效果很好.

我将在Area/subdomain中使用不同的布局/样式,所以我想知道: 如何让Area显示自己的错误页面?

使用当前设置,所有子域都将显示添加到customErrorshttpErrors部分的主要自定义错误集(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)

asp.net-mvc web-config custom-errors

9
推荐指数
1
解决办法
1466
查看次数

即使使用customErrors ="Off"(在ubuntu/mono上),Web.config也不会远程显示错误

这是我的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)

asp.net mono web-config custom-errors

8
推荐指数
3
解决办法
5万
查看次数

为什么IIS Express使用<system.web>而不是<system.webServer>?

使用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

asp.net custom-errors iis-7.5 iis-express asp.net-mvc-3

8
推荐指数
1
解决办法
3650
查看次数

自定义404错误页面无法在IIS 8.5上运行

我最近移动了主机,不得不在IIS中再次设置客户错误.

我可以按如下方式转到IIS Admin和Error Pages:

IIS上的自定义错误

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

客户错误设置

这将创建我的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错误页面位于正确的位置.

我看不出还有什么需要做的.

iis custom-errors

8
推荐指数
2
解决办法
2万
查看次数

错误消息的详细程度如何?

我想知道对错误消息的一般共识是什么.它们应该有多详细?

我已经处理了一些项目,其中有一个不同的错误消息,用于输入一个太大,太小,有十进制,是一个字符串等的数字.这对用户来说非常好,因为他们确切地知道哪里出了问题,但错误处理代码开始与实际的业务逻辑大小相媲美,并开始开发一些自己的错误.

另一方面,我参与了一个项目,你会得到非常一般的错误,例如

编制失败的原因3

不用说,几乎完全没用,因为原因3表明链接错误.

那么中间地带在哪里?我怎么知道我是否添加了足够描述性的错误消息?我怎么知道用户是否能够理解他们出错的地方?

error-handling user-interface custom-errors

7
推荐指数
1
解决办法
387
查看次数

ASP.NET customErrors with mode = remoteOnly和global.asax处理异常

我在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我是否是远程的,以确定是否重定向?

asp.net redirect exception custom-errors global-asax

6
推荐指数
1
解决办法
9855
查看次数

如何从代码中获取customErrors的defaultRedirect值?

我只想做以下事情:

var defaultRedirectUrl = SomeMethodToGetDefaultRedirect();
Run Code Online (Sandbox Code Playgroud)

当然在web.config我有

<customErrors mode="On" defaultRedirect="~/Error"/>
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

.net c# asp.net-mvc web-config custom-errors

6
推荐指数
2
解决办法
2864
查看次数

ServiceStack REST服务中的自定义异常处理

我有一个ServiceStack REST服务,我需要实现自定义错误处理.我已经能够通过将AppHostBase.ServiceExceptionHandler设置为自定义函数来自定义服务错误.

但是,对于其他类型的错误,例如验证错误,这不起作用.我怎样才能涵盖所有案件?

换句话说,我正在努力实现两件事:

  1. 为可能弹出的每种异常设置我自己的HTTP状态代码,包括非服务错误(验证)
  2. 为每种错误类型返回我自己的自定义错误对象(不是默认的ResponseStatus)

我将如何实现这一目标?

c# api rest custom-errors servicestack

6
推荐指数
1
解决办法
3486
查看次数

对象传播错误导致没有消息属性

我正在尝试传播错误,以便我可以在不影响原始错误的情况下更改错误。

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}。所以,是的,我所需要的只是澄清一下,这样我就可以确定我没有遗漏任何东西。谢谢你。

javascript custom-errors object-destructuring

5
推荐指数
1
解决办法
354
查看次数

vbObjectError 应该使用什么数字?

该页面说:

“如果生成错误,则应将数字添加到 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

5
推荐指数
2
解决办法
1051
查看次数