在 global.asax 中实现自定义错误

2023-12-10

In my global.asax文件,我有以下代码:

void Application_Error(object sender, EventArgs e)
{
    Exception TheError = Server.GetLastError();

    if (TheError is HttpException && ((HttpException)TheError).GetHttpCode() == 404)
    {
        Response.Redirect("~/404.aspx");
    }
    else
    {
        Response.Redirect("~/500.aspx");
    }
}

当我导航到不存在的页面时,我收到一般错误页面。我不希望出现任何与自定义错误有关的内容web.config因为我的计划是将代码添加到global.asax文件来记录异常。有没有办法仅使用 global.asax 文件来处理自定义错误?

enter image description here


EDIT:

答案是not显而易见,但这似乎可以解释它:http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/displaying-a-custom-error-page-cs

如果你向下滚动,你会发现这个可爱的花絮:

注意:自定义错误页面仅在发出请求时显示 到由 ASP.NET 引擎处理的资源。正如我们在 IIS 和 ASP.NET 开发服务器之间的核心区别 教程中,Web 服务器可能会自行处理某些请求。经过 默认情况下,IIS Web 服务器处理静态内容的请求,例如 图像和 HTML 文件,无需调用 ASP.NET 引擎。 因此,如果用户请求一个不存在的图像文件,他们将 取回 IIS 的默认 404 错误消息而不是 ASP.NET 的 配置错误页面。

我已经强调了第一行。我在默认模板中对此进行了测试,果然,这个 URL:

http://localhost:49320/fkljflkfjelk

为您提供默认的 IIS 页面,而只需附加 .aspx 即可Application_Error因此,如果您想处理所有错误,听起来您需要启用 customErrors/httpErrors。

对于 IIS , 添加<system.web>:

<customErrors mode="On" redirectMode="ResponseRewrite">
  <error statusCode="404" redirect="/404.aspx"/>
  <error statusCode="500" redirect="/500.aspx"/>
</customErrors>

对于 IIS7+, 添加<system.webServer>:

<httpErrors errorMode="Custom">
  <remove statusCode="404"/>
  <error statusCode="404" path="/404.aspx" responseMode="ExecuteURL"/>
  <remove statusCode="500"/>
  <error statusCode="500" path="/500.aspx" responseMode="ExecuteURL"/>
</httpErrors>

如果有人发现它有用,我会留下原始答案。


我相信您需要从响应中清除现有的错误代码,否则 IIS 会忽略您的重定向以支持处理错误。还有一个布尔标志,TrySkipIisCustomErrors,您可以针对较新版本的 IIS (7+) 进行设置。

所以,像这样:

void Application_Error(object sender, EventArgs e)
{
    Exception TheError = Server.GetLastError();
    Server.ClearError();

    // Avoid IIS7 getting in the middle
    Response.TrySkipIisCustomErrors = true;

    if (TheError is HttpException && ((HttpException)TheError).GetHttpCode() == 404)
    {
        Response.Redirect("~/404.aspx");
    }
    else
    {
        Response.Redirect("~/500.aspx");
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 global.asax 中实现自定义错误 的相关文章

  • 错误:表达式不可赋值三元运算符

    我有以下代码 MPLABX XC8 编译器给出此错误 错误 表达式不可分配 U1ERRIRbits RXFOIF uart1 oerr 1 uart1 oerr 0 这是相关代码部分 typedef union struct bool fe
  • 在 LINQ 查询中进行转换

    是否可以在 LINQ 查询中进行强制转换 为了编译器的缘故 下面的代码并不糟糕 但最好将其放入一个查询中 Content content dataStore RootControl as Controls Content List
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • 每个元素的 asp.net Web 表单自定义错误消息

    我创建了一个 Web 应用程序 表单 以及后端 SQL 插入和查询 目前我正在显示所有用户错误消息 div style padding 1em div
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 我能否找出 ASP 回发时将触发哪些控制事件?

    是否有可能在发生之前获取将要触发的控制事件列表 例如在Page Load处理程序 例如 如果单击了一个按钮 我可以在button click事件处理程序被调用 您选择了一个非常棘手的问题 原因是事件触发的方式有多种 1 EVENTTARGE
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 运行实体框架自定义工具,它有什么作用?

    在 Visual Studio 中 当使用实体框架并为 tt 和 Context tt 文件应用运行自定义工具时 它是什么以及它有什么作用 为什么它解决数据库同步问题 有时 为什么我应该在运行 tt 之前运行它 Context tt 它被称
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 异步/等待 - 是*并发*吗?

    我一直在考虑 C 5 中新的异步内容 并且出现了一个特殊问题 据我了解 await关键字是一个简洁的编译器技巧 语法糖来实现连续传递 http en wikipedia org wiki Continuation passing style
  • 使用空的weak_ptr作为参数调用map::count安全吗?

    打电话安全吗map count http www cplusplus com reference map map count on an 未初始化因此为空weak ptr http en cppreference com w cpp mem
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的
  • NHibernate:无状态会话错误消息无法获取代理

    我正在使用 nHibernate 无状态会话来获取对象 更新一个属性并将对象保存回数据库 我不断收到错误消息 无状态会话无法获取代理 我在其他地方有类似的代码 所以我不明白为什么这不起作用 有谁知道问题可能是什么 我正在尝试更新Screen
  • 如何使用 Microsoft Graph API 更新 MailboxSettings

    我想从不同的日历更新邮箱设置 如何构建可以通过 Microsoft Graph 更新 MailboxSetting 的请求 这是我的代码示例 但有例外 代码示例 User obj GraphServiceClient Users roomC

随机推荐

  • 如何估计 R 中图形线上的点的坐标?

    假设我有数据 x lt c 1900 1930 1944 1950 1970 1980 1983 1984 y lt c 100 300 500 1500 2500 3500 4330 6703 然后 我绘制这些数据并在已知的 x 和 y
  • Ivy 无法解析依赖关系的范围,该依赖关系是传递依赖关系的依赖关系

    我向 ivy xml 添加一个依赖项 让我们将其命名为 A 该文件在 Maven 中心有一个 pom 文件 Ivy 使用 ibiblio 来解决 Maven 依赖关系 添加到ivy xml 的依赖项 A 具有传递依赖项 B 到目前为止一切顺
  • $_Session 登录和注销 php 的“复杂性”

    我正在为大学做一个数据库项目 我在这里遇到了一个问题 我试图在没有会话时显示 登录 在有会话时显示 注销 但实际上即使在我登录后它仍然显示我 登录 并且我尝试 print r SESSION 它告诉我该变量未定义 我有一个注销文件 和一个
  • PHP 发送 UTF-8 邮件而不使用 PEAR::Mail PEAR::Mail_Mime

    我希望能够使用包含 8 位字符 的 PHP mail 发送电子邮件 它们将用在主题 消息和 发件人 标题中 在不使用 PEAR 包的情况下如何做到这一点 如果您不介意对不需要的单词进行编码 最简单的解决方案是将所有内容放入 base64 R
  • 上传文件之前生成 Firebase 存储下载 url

    Firebase Storage 有没有办法生成一个指向任何内容的下载网址 以便稍后将文件上传到该网址 类似的东西 在 Kotlin 中 fun generateItemPhotoUrl id String storageRef child
  • 调用链内的空合并

    如果我有一长串对象 每个对象都有可能在 Linq where 子句中返回 null 例如 SomeSource Where srcItem gt srcItem DataMembers SomeText Connection Connect
  • Realm 返回空对象列表

    我想从 Farmer 对象中获取 CropDataList 当我获取 Farmer 对象时 它不为空 但与 Farmer 对象关联的作物数据列表返回空 我可以通过 Stetho 查看数据库条目 并且列表中有一个条目 这是我的代码 publi
  • 使用 LINQ(赛程列表)形成锦标赛表

    I have an array of players string and now I need to get an array of pairs representing games playerN playerM to orginize
  • httr POST 请求 API 返回 400 错误

    我正在使用 R 中的 httr 包来尝试查询 postcode io API http postcodes io docs 我可以按照说明成功查询单个邮政编码 sample4 lt GET api postcodes io postcode
  • Bull队列:当作业失败时,如何停止队列处理剩余作业?

    我在用bull队列来处理一些作业 在当前场景中 每个作业都是某种操作 因此 每当队列中的操作列表中的操作 作业 失败时 队列就必须停止处理剩余的作业 操作 到目前为止我尝试过什么 所以我尝试在特定作业失败时暂停队列 接下来 队列在耗尽时恢复
  • Glassfish v4 和 SSL - 管理员不再起作用

    我已经完成了将 SSL 证书添加到 glassfish v4 中的步骤 我已经验证它可以通过浏览器和我的 java swing 客户端工作 我在客户端使用 apache 的 http 客户端库 不起作用的是管理控制台 成功导入 SSL 后
  • 如何在角度2中使用jquery?

    我知道我是否需要在 Angular 1 3 或 1 4 中使用第三方库 我需要对该东西进行指令并在我们的项目中使用它 现在我正在使用角度2 0 我想把这个做成angular 2 https jqueryui com autocomplete
  • minSdkVersion破解程序

    所以每当我添加
  • 使用 for 循环将输入分成两部分

    这就是我在尝试使用网络课程学习 Python 时陷入困境的地方 编写一个程序 采用 number1 number2 形式的单个输入行 其中两者都表示正整数 并输出两个数字的总和 例如 输入 5 12 时输出应为 17 我们不应该使用 spl
  • 使用 JSoup 从 Google 搜索结果的所有页面检索所有链接

    我有以下使用 JSoup 在 java 中解析 HTML 的代码 Document linksDoc null linksDoc Jsoup connect http www google com search q jbutton user
  • 无法让球衣 2 应用程序使用自定义杰克逊 XmlMapper

    我正在使用 Jersey 2 22 1 和 Jackson 2 6 3 编写 Web 应用程序 我的 pom xml 如下所示
  • Java ACM 包

    我正在尝试在 Eclipse 中编写一个 java 应用程序 我真的很想使用 ACM Program 包 但是 我的 Eclipse 副本没有安装它 我查遍了整个网络 但找不到 ACM 包的下载 更多信息 每当我尝试代码时 package
  • Chrome 中 :first-letter 的奇怪行为

    将看似无害的类添加到具有包含 first letter 的类的元素会导致第一个字母在某些情况下无法正确呈现 元素最初具有类 unindent 然后添加类 menuitemon 小提琴http jsfiddle net pgf3reyt 4
  • 如何显示多张图片?

    我的html代码是这样的
  • 在 global.asax 中实现自定义错误

    In my global asax文件 我有以下代码 void Application Error object sender EventArgs e Exception TheError Server GetLastError if Th