ASP.NET MVC 如何在不重写 URL 的情况下处理 Application_Error 的 404 错误

2024-03-25

我创建了一个非常简单的 ASP.NET MVC 5 应用程序,我想在其中处理我的 404 异常Application_Error如图所示这个问题 https://stackoverflow.com/questions/7501810/net-mvc-how-to-fire-a-error-for-application-error-manage-them and 在另一个答案中 https://stackoverflow.com/questions/619895/how-can-i-properly-handle-404-in-asp-net-mvc/620559#620559。但是当我尝试访问一个不存在的页面时(并期望显示我的 404 页面)我的自定义错误页面的源代码以纯文本形式显示!.

我不希望我的网址被重写为在这篇文章中 https://stackoverflow.com/questions/1171035/asp-net-mvc-custom-error-handling-application-error-global-asax

我的项目非常简单。我刚刚添加了一个基本的ASP.NET WebApplication with Razor:

  • an ErrorsController.cs
  • a view Http404.cshtml
  • 并编辑了Global.asax

如下所示:

项目组织:


全局.asax:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {}

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception exception = Server.GetLastError();
        HttpException httpException = exception as HttpException;

        RouteData routeData = new RouteData();
        routeData.Values.Add("controller", "Errors");

        if (httpException == null)
        {
            routeData.Values.Add("action", "Index");
        }
        else
        {
            switch (httpException.GetHttpCode())
            {
                case 404:
                    routeData.Values.Add("action", "Http404");
                    break; 
            }
        }

        Response.Clear();
        Server.ClearError();
        Response.TrySkipIisCustomErrors = true;

        IController errorController = new ErrorsController();
        errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
    }
}

错误控制器.cs:

public class ErrorsController : Controller
{
    public ActionResult Http404(string url)
    {
        return View("Http404");
    }
}

http404.cshtml

@{
    ViewBag.Title = "Page not found";
}

<h2>Page not found</h2>

但是当我尝试访问一个不存在的页面时,我看到的所有内容都是 404 页面的源代码:不存在页面的输出:


我在 stackoverflow 和其他网站上搜索了几个小时,但没有找到任何可以帮助我的东西。

有些人使用非常相似的代码来处理 404 异常,但没有得到相同的结果。我真的很困惑,我希望有人可以帮助我,或者至少向我展示一种比这个答案 https://stackoverflow.com/questions/619895/how-can-i-properly-handle-404-in-asp-net-mvc/2577095#2577095处理 ASP.NET MVC 5 中的 404 异常。


如果您的浏览器中有纯文本 html,则可能意味着您的浏览器有误Content-Type标头中的值。

尝试这个 :

Response.ContentType = "text/html"; 

这当然不是最好的解决方案,但它确实有效。

Ludo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC 如何在不重写 URL 的情况下处理 Application_Error 的 404 错误 的相关文章

  • 获取 Html.TextBoxFor 字段的 HTML id

    有没有办法在 Javascript 中获取 ASP NET MVC 控件生成的客户端 ID Html TextBoxFor m gt m Name 像这样 Html IdFor m gt m Name
  • 在 Visual Studio 中将域名从 localhost 更改为自定义名称

    我是 MVC 新手 我刚刚在 VS 2010 中创建了一个 MVC4 测试项目 它运行正常 但 url 是http 本地主机 60826 http localhost 60826 我想把它改成http my test site http m
  • 此上下文中仅支持实体类型、枚举类型或基本类型

    我目前正在开发一个搜索页面 我只需要返回主题的主题详细信息列表 其中包含存储在 int ST 中的所有主题标签 id 目前 ST null true ST Contains b ThemeTagID 行似乎给了我一个错误 附加信息 无法创建
  • R:使用 RGDAL 和 RASTER 包时抛出错误

    给所有可能相关的人 这是源代码 GRA D1 lt raster files 1 Sets up an empty output raster GRA D1 lt writeStart GRA D1 filename GRA D1 tif
  • 使用不存在和联接的 SQL 查询到 LINQ 语法

    我的 SQL 查询如下所示 在 SQL 中运行良好 我需要将其转换为 LINQ 语法 SQL SELECT Key Id FROM LocalizationKeys AS lk WHERE NOT EXISTS SELECT 1 FROM
  • 如何使用 PowerShell 使用 C# DLL 中存在的类的 New-Object

    例如 我有一个 C 类 public class MyComputer PSObject public string UserName get return userName set userName value private strin
  • 如何将文本框中删除的字符替换为0

    在winforms中 如何用零替换删除的字符 例如 文本框中为 12 45 如果我们删除小数点后 它应该变成12 00 同样的方法删除前面的000 45 默认值应为 000 00 Use a 蒙版文本框 http msdn microsof
  • 无法运行bjam编译boost python教程

    我正在尝试跟随本教程 http www boost org doc libs 1 55 0 libs python doc tutorial doc html python hello html关于为 Windows 的 python 包装
  • C 中经过的时间

    include
  • 无效的跨线程访问问题

    我有两个 ViewModel 类 PersonViewModel 和 PersonSearchListViewModel PersonViewModel 实现的字段之一是通过 WCF 下载的个人资料图像 本地缓存在独立存储中 PersonS
  • 慢速 WPF 文本框

    我正在开发一个简单的串行数据查看器 它将用于观察传输到计算机串行端口之一的数据 我使用 C 和 WPF 编写了一个测试应用程序 它只是将最近读取的行放入文本块中 但是 它会跳过所有其他行 我的理论是 在 WPF 渲染窗口之前 新数据会被放入
  • 如何处理 Primefaces 延迟加载中的错误?

    我无法让用户知道发生的异常PrimeFaces http primefaces org LazyDataModel load方法 我正在从数据库加载数据 当引发异常时 我不知道如何通知用户 我尝试添加FacesMessage to Face
  • 弹出窗口或弹出窗口显示附加信息

    我想在我的应用程序顶部显示带有附加信息的弹出窗口 我的信息是Listview大约 500 个项目我都尝试过 有问题flyout gt 它里面可能有scrollViewer 所以我的列表视图不能正确虚拟化 其他一切都可以 有我的代码 Flyo
  • 使用来自不同线程的实时数据更新 QTableView 的最佳策略

    我的应用程序现在启动几个线程 如 5 10 个 来从不同源收集数据 它们与主 GUI 线程分离 因此我在 GUI 中感觉不到任何缓慢 并且我可以在后台线程工作时继续工作 一切都很棒 但现在我希望能够在我的主 GUI 中的 QTableVie
  • 最佳实践:从属性中抛出异常

    什么时候适合从属性 getter 或 setter 中抛出异常 什么时候不合适呢 为什么 关于这个主题的外部文档的链接会很有帮助 谷歌搜索结果出奇的少 Microsoft 在以下位置提供了有关如何设计属性的建议 http msdn micr
  • 在 C 或 C++ 中使用逗号作为宏名称

    我想做这样的事情 define define MAX 10 000 000 undef 有什么技巧可以做到吗 编辑 我知道 C 14 中的数字分隔符 我正在寻找一种技巧来对不兼容的编译器执行相同的操作 EDIT2 请考虑Variadic M
  • C memcpy 二维数组

    我正在尝试使用将一个二维数组复制到另一个memcpy 我的代码 include
  • 如何使用 Xamarin 应用程序开发自动注销

    我必须在 App xaml cs 上添加功能才能使其正常工作 我在 OnStart 上添加了功能 但现在它会间歇性地一次又一次地将我从应用程序中注销 根据下面的代码 我需要做什么才能让它停止这样做 或者我的代码有问题 这是我最新的代码 na
  • 提取 zip 文件时 Parallel.ForEach 抛出异常

    我正在阅读 zip 文件的内容并尝试提取它们 var allZipEntries ZipFile Open zipFileFullPath ZipArchiveMode Read Entries 现在 如果我提取使用 Foreach 循环
  • 在 asp.net MVC 控制器中调用异步外部 Web 服务

    在 Asp net MVC 控制器 GET 方法 中 我调用外部 Web 服务 用于 IP 地理定位 返回 IP 位置的 json 数据 如何使调用异步 以便堆栈可以在等待服务响应时继续 当 GEO IP 请求完成后 我希望能够更新数据库

随机推荐

  • SSIS 包保存在哪里?

    我右键单击 SQL Server 2008 Management Studio 对象资源管理器中的数据库 我转到 任务 gt 导入数据 从平面文本文件导入一些数据 选择将包保存在服务器上 现在我到底该如何访问该包来编辑或再次运行它呢 我应该
  • 在代码管理菜单中恢复 Visual Studio Code 中删除的文件

    我真的很沮丧 因为我不小心删除了 Visual Studio Code 中的 3 个文件 我是通过左侧的 源代码管理 菜单完成的 现在我的问题 是否有可能恢复我这样删除的 3 个文件 我希望得到任何答案 也许您想知道 我使用 Windows
  • Android 闪光灯在相机运行时使用按钮打开/关闭

    我看到有很多这样的问题 但我没有找到任何方法 在我的应用程序中 我有自己的相机和一些选项 并且还有名为的按钮btnFlash用于在相机运行时打开 关闭相机的闪光灯 我尝试了很多方法 但在 Samsung Tab 和 HTC 上都没有效果 这
  • 如何通过 bash shell 在 SQLite 中转义字符?

    我正在尝试使用 bash 从命令行向 SQLite 发送查询 我需要转义单引号和双引号 并转义它们 以便 bash 不会误解它们 这是一个典型的查询 select from contacts where source Nancy s not
  • Spring Async DeferredResult 在 Tomcat 8 中不起作用

    我使用 Spring 4 0 5 和 Servlet API 3 1 0 创建了一个异步 MVC 应用程序 异步行为在使用 Firefox 24 的 Jetty 8 0 中运行良好 但我无法让它在 Tomcat 8 0 和 Firefox
  • 无法训练求解 XOR 映射的神经网络

    我正在尝试为 Keras 中的 XOR 问题实现一个简单的分类器 这是代码 from keras models import Sequential from keras layers core import Dense Dropout Ac
  • 如何让 Eclipse 使用现有的 svn 工作副本?

    我已经用 svn 签出了一份工作副本 此外 我在 Eclipse 中创建了一个新项目 该项目将工作副本的根目录作为项目的位置 我希望能够执行诸如比较 Eclipse 版本之类的操作 我有 Subclipse 1 4 8 但这似乎没有给我我想
  • 为什么没有 64 位版本的 Visual Studio 2010?

    我在msdn下载中只看到x86版本 里科 马里亚尼 http blogs msdn com ricom archive 2009 06 10 visual studio why is there no 64 bit version aspx
  • 私有与受保护 - 可见性良好实践问题[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我一直在寻找 我知道理论上的区别 public 任何类 函数都可以访问该方法 属性 受保护的 只有此类和任何子类可以访问方法 属性 privat
  • 在启动 Express 服务器之前等待几个数据库连接?

    我正在开发一个 Express 应用程序 启动时 它连接到 Redis 服务器和 PostgreSQL 服务器 我想在启动 Express 服务器之前等待两个连接都成功 现在 如果我只是等待one回调 我可以在该回调中启动 Express
  • F#:管道与作曲与......作曲?

    我对一切都很陌生 F 一般编程以及这个社区 我是一名数学家 在本科期间曾短暂接触过计算机科学 我正在尝试用 F 完成一些任务 F 备忘单 http dungpa github io fsharp cheatsheet 展示了三种不同的函数组
  • Jetpack 仅撰写粗体字符串占位符

    我有一个像这样的字符串资源
  • 这段代码如何使用保留关键字作为字段名称?

    我在遗产中发现了以下结构java字节码在尝试解决服务器应用程序启动问题时 我的 IDE 反编译了一些第三方库 我很好奇这如何有效 以前从未见过keywords可以用作字段名称在字节码中 字节码版本为 48 0 Java 1 4 public
  • 使用 pydev 中的 unittest 在 Python 中对整个项目层次结构进行单元测试

    我正在使用 unittest 模块对一些使用 Pydev 在包的分层结构中创建的 python 代码进行单元测试 当我尝试在 pydev 中对实际源代码及其单元测试使用单独的源文件夹时 问题就出现了 project src com myse
  • IBAN 验证检查

    我需要使用 JavaScript 进行 IBAN 验证检查 我需要遵循的规则是 验证 IBANIBAN 的验证方法是将其转换为整数并对其执行基本 mod 97 运算 如 ISO 7064 中所述 如果 IBAN 有效 则余数等于 1 检查国
  • Flexbox:居中元素,两侧有空间元素

    我正在使用 Flexbox 设置一个由七个组成的菜单 li 具有不同宽度的元素 我想要我的中间 源顺序中的第四个 li li 元素始终作为一种锚点水平居中 第 1 3 个元素 li li 元素占据居中左侧的空间 li li 第 5 7 个占
  • 如何将 LESS 集成到 ZendFramework 2 中

    我已经发现本教程 https stephen rees carter net thought integrating less with zend framework the easy way这是为了Zend框架1 我下载少了放在下面项目
  • 如何知道特定的 launchd .plist 文件位置?

    是否可以知道由加载的 plist 文件位置launchctl命令 标签名称列出为launchctl list其内容可以通过以下方式查看launchctl list LABEL 但我找不到 plist 文件位置 我知道它将位于 Library
  • 关于使用 iostream 进行解析的准则是什么?

    我发现自己最近写了很多解析代码 大部分是自定义格式 但并不真正相关 为了增强可重用性 我选择将解析函数基于 I O 流 以便我可以将它们与诸如boost lexical cast lt gt 然而 我意识到我从未在任何地方读过有关如何正确执
  • ASP.NET MVC 如何在不重写 URL 的情况下处理 Application_Error 的 404 错误

    我创建了一个非常简单的 ASP NET MVC 5 应用程序 我想在其中处理我的 404 异常Application Error如图所示这个问题 https stackoverflow com questions 7501810 net m