2009-09-02 54 views
1

我把整个设置自定义错误页的网页例子来,人们做这样的事情:Web.config中的错误标记customerErrors部分需要Int32 statusCode?

<customErrors mode="RemoteOnly" defaultRedirect="GeneralError.aspx"> 
    <error statusCode="401.2" redirect="4012Error.htm"/> 
</customErrors> 

我知道,一个401.2重定向有自己的一套头痛,但IIS不抱怨说。这是当我浏览我的网站时它给我的:

解析器错误消息:属性'statusCode'的值无法解析。错误是:401.2不是Int32的有效值。

如果我将它更改为“401”,它工作正常。即使Intellisense也抱怨statusCode需要成为Int32。

人们如何使用子码?我当然不能!

非常感谢!

回答

0

http://msdn.microsoft.com/en-us/library/aa478979.aspx Windows下

基本身份验证,通过 默认情况下,将允许三次尝试在 正确的用户名和密码 组合。如果所有三个都失败,那么 将发送HTTP 401.2未经授权的 错误。由于基本身份验证是 由IIS执行而不是由ASP.NET执行,因此无法创建自定义错误 页面,因为ASP.NET永远不会有 机会来查看请求。

你可以在你的global.asax文件中放置一些代码来捕获这些类型的错误吗?您只需要注意global.asax文件在每个页面请求上执行,因此请确保您具有有效的检查以防止在访问默认页面和登录页面之前进行重定向。

您也可以进入IIS并更改默认错误页面以指向您的网站的此错误的URL。

+0

这是我使用的表示用于错误引导一个401.2: http://www.flimflan.com/blog/HttpModuleToAllowACustomErrorPageFor4012AccessDeniedInASPNET.aspx 它把一个HttpHandler中,我认为强制IIS处理我的customError。 我更改了IIS中的默认错误页面,但由于我的错误页面上包含图形和CSS,因此页面无法正确加载。只显示HTML - 图形和CSS出现401.2错误,并且不显示。 我看到一些帖子,人们抱怨说global.asax没有为他们工作,这就是为什么我尝试httpmodule方法。 – TimH 2009-09-03 12:52:17