【发布时间】:2011-07-09 11:29:49
【问题描述】:
我在 IIS 7 上运行 Sitefinity CMS 网站。当我尝试返回 404 状态时,我看到了一些奇怪的结果。
如果我访问如下网址:
www.mysitefinitywebsite.com/test.co.uk(我知道这是一个无效地址,但有人将它输入到 CMS 中)
由于上面不是 ASPX 页面,我相信 IIS 会处理错误,代码如下:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" />
</httpErrors>
地址栏中的url保持不变,显示我的自定义404页面(/404.aspx)页面,但是返回http状态码200。
如果输入以下网址:
www.mysitefinitywebsite.com/test.aspx - ASPX 错误处理程序使用以下配置启动:
<customErrors mode="On" >
<error redirect="~/Sitefinity/nopermissions.aspx" statusCode="403" />
<error redirect="~/404.aspx" statusCode="404" />
</customErrors>
再次显示我的自定义 404 页面,但是地址栏中的 url 更改为:
www.mysitefinitywebsite.com/404.aspx?aspxerrorpath=/test.aspx
奇怪的是,如果我检查 Firebug,text.aspx 会返回 302 代码,然后 /404.aspx?aspxerrorpath=/test.aspx 会返回 200 的状态。
我不完全理解这里发生了什么,似乎 IIS 根本没有响应状态码 - 这是设计使然吗?看起来完全疯了!
如果是设计使然,大概解决它的唯一方法是以编程方式返回正确的响应代码?
提前致谢 喜气洋洋的
【问题讨论】:
标签: asp.net iis-7 error-handling custom-error-pages