c# - ASP.NET 404 http模块

标签 c# asp.net httpmodule episerver episerver-6-r2

我正在使用名为 EPiServer 的 CMS 产品。我们需要创建我们自己的显示 404 的方法,这是使用 .NET 的标准 customErrors 无法实现的。我们编写了一个模块,用于检查 HttpStatusCode。我们在 EndRequest 方法中执行此操作。

如果状态为 404,我们向 EPiServer 查询适当的 404 页面,然后将请求转移到该页面。但是,这不会返回 404,即使我执行以下操作,也不会返回正确的状态:

HttpContext.Current.Response.StatusCode = 404;
HttpContext.Current.Response.StatusDescription = "Page not Found";
HttpContext.Current.Server.TransferRequest(newPage);

同样,如果我执行 response.redirect 而不是 TransferRequest 那么它不是正确的 404,因为 url 已经改变了...

这样做的正确方法是什么?

提前致谢 阿尔

最佳答案

不是您问题的直接答案,但也可以看看这个开源 404 处理程序:https://www.coderesort.com/p/epicode/wiki/404Handler

它也可以在 episervers nuget feed 上使用

关于c# - ASP.NET 404 http模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9158884/

相关文章:

c# - Streamwriter 未写入文件

c# - 使用 MVVM 时如何使 TextBox 成为 "password box"并显示星星?

c# - ASP.NET 单工作线程? (在内存 session 中)

c# - ASP.NET MVC 4 ModelBinding 使用 [] 符号而不是点

asp.net - 使用自定义 http 模块时,IIS 7 中默认页面的 AJAX 部分呈现问题

c# - 为什么 Thread.CurrentThread.CurrentCulture 在页面渲染和 HttpModule.PostRequestHandlerExecute 之间会发生变化?

asp.net - 使用 jquery ajax 的 Web api - 无法加载资源 : the server responded with a status of 404 (Not Found)

mysql - 无法将 MySQL 日期/时间值转换为 System.DateTime

c# - 异步数据库查询触发存储过程

asp.net - httpModules 不适用于 iis 7.5 的 url 重写/扩展少 url(给出错误 500.0)