[英]IIS7 404 errors
我有一个在IIS 7中运行的ASP.NET 3.5站点
我试图让404第一次抛出404状态代码。
目前,如果您输入
http://www.madeupsiteforexample.com/somethingmadeup
你收到302跟随200。
我试图让这个第一次抛出404代码并显示我已设置的404页面(/FileNotFound.aspx)
我遇到的问题是404页面显示200代码,或者当IIS看到404状态代码并显示其自己的可怕404页面而不是我自定义创建的页面时,IIS接管。
我已经尝试使用模块,global.asax并在我的404页面后面的代码上设置状态代码。 所有这些都导致IIS接管。
这是我的Global.asax实现
protected void Application_Error(object sender, EventArgs e)
{
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = 404;
}
现在我确实通过Server.Transferring我的请求解决了这个问题。
但是,这会导致所有会话都为null,并且引用Session的任何代码都会导致异常。 此外,尝试从资源文件中检索项目的代码会导致异常。
关于在IIS7中做404的“正确方法”的任何建议或文章?
我也被困在iis 7上了......你可以尝试这个,因为它对我有用...
<httpErrors existingResponse="PassThrough" />
这个人也和你有同样的问题。 IIS7在设置Response.StatusCode时覆盖customErrors?
这是对正在发生的事情的忏悔http://www.fidelitydesign.net/?p=21
看一下本教程 ,通过配置而不是代码设置自定义错误页面是正常的。
您可以通过修改“默认网站”(或特定于您的应用程序)下的“错误页面”设置来更改在404显示的页面
如果希望Session仍然可用,请使用Server.TransferRequest(IIS6中不支持)而不是Server.Transfer。
但我首选的方法是调用Response.StatusCode = 404;
在FileNotFound.aspx
并将web.config设置为:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1"/>
<error statusCode="404" prefixLanguageFilePath="" path="/FileNotFound.aspx" responseMode="ExecuteURL"/>
</httpErrors>
</system.webServer>
对于其他人,如果你像我一样只是在主页上显示404错误的顶部显示消息,你可以测试它是否是404请求,因为内部新请求的状态代码附加到网址即ie
if (Request.Url.ToString().Contains("?404;"))
{
Response.StatusCode = 404;
Util.DisplayMessage("The page you are looking for no longer exists. If you navigated to this page by clicking a link within this site please <a href='" + ResolveUrl("~/contact.aspx") + "'>contact us</a> to let us know.");
}
如果它们相对于FileNotFound.aspx
(即不是站点根'/ path'或在服务器'〜/ path'解析),那么图像,脚本等的路径也可能是错误的,并且缺少的页面(即当前URL)是另一个文件夹。 要修复我告诉浏览器将基本标记的FileNotFound.aspx
所在的相对路径作为基础,并告诉服务器与Context.RewritePath匹配即
Page.Header.Controls.AddAt(0, new LiteralControl("<base href='" + Request.Url.Scheme + "://" + Request.Url.Authority + VirtualPathUtility.ToAbsolute("~/") + "'/>"));
Context.RewritePath("~/");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.