为什么IIS不能执行我的自定义404页面? 它试图提供原始的源代码

我正在尝试在IIS6中configuration自定义错误。

我select了404错误,将下拉列表设置为“URL”,然后input这个URL作为URL“/404.aspx”

当去到:

http://mysite.com/no-page-here

它发现404.aspx,但不会将其作为.Net页面进行处理 – 它将尝试将源代码作为XML文件提供,然后由于不会进行分析而失败。

404s可以在.Net页面上正常工作,因为我在web.config的CustomErrors元素中设置了它。 但对于非.Net资源,我必须使用IIS错误,并拒绝redirect到404页面。 它本质上是试图提供源代码。

你在IIS6中启用了正确的扩展吗? 在IISpipe理器中,转到Web Extensions(通常是左侧导航树中的最后一项),并确保启用了所有适当的项目(通常是.NET)。 否则,这正是会发生什么事情。

你有尝试把完整的URL而不是只是“/”? 我以为这种行为发生在你select“文件”而不是URL时,但如果它是一个本地URL,它也会绕过ASP.Net工作进程。

听起来就像你在错误文件本身有一个错误。 如果您浏览到该文件是否得到正确的服务,或者你有相同的症状?

我不认为你可以有一个dynamic的页面作为你的404服务。如果我没有记错,它需要是一个静态页面。 我想你可以redirect元或JS从dynamic页面,虽然这不是“标准”

这个Technet文章说确定并selectURL,否则有风险返回页面的源代码。

本文解释了如何使用global.asax文件来捕获所有应用程序错误,包括404。

Global.asax需要有:

protected void Application_Error(object sender, EventArgs e) { } 

当现在抛出任何exception(无论是普通exception还是404)时,都会在Application_Error中结束。

你想要的是,将下拉菜单设置为URL,然后input“/sitename/404.aspx”,其中sitename是网站的根目录。

它真的就像你设置“文件”而不是“URL” – 但你没有。 当你在浏览器中插入整个404 URL时会发生什么? 如果/404.aspx可以尝试插入完整的URL而不是/404.aspx

 http://www.example.com/404.aspx 

你提到这是客户的服务器。 确保没有两个网站指向相同的物理目录,而您正在编辑错误的网站。 有更多的,并确保该网站被标记为应用程序。

从它的声音你试图使用web.config指向一个.NET错误页面。 这只适用于.Net页面。 如果您使用混合说经典ASP和.Net您必须设置IIS错误指向您想要的文件。 为此,您必须直接访问服务器。 或者在你的Global.asa中写一些东西来redirect错误。

至less这是我怎么也不得不这样做。

编辑:现在,我想了一下,做了一点挖掘我的本地主机,它看起来不像你可以将自定义错误指向.Net页面。 它似乎并没有使用ASP.NET来处理那些当然需要呈现的页面。 您将需要使用HTML页面,并可能从那里redirect。