我在网上几次看到这个问题,但是我还没有看到答案解决了我的问题。
我在我的应用程序中启用了表单身份validation,并且匿名访问已被拒绝:
<configuration> ... <system.web> ... <authentication mode="Forms"> <forms name=".ASPXFORMSAUTH" loginUrl="Account/Authenticate.aspx"></forms> </authentication> <authorization> <deny users="?"/> </authorization>
访问login页面已启用:
</system.web> <location path="Account/Authenticate.aspx"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location>
在项目属性对话框中启用匿名身份validation,并禁用Windows身份validation。 我也在我的文档中检查了IIS Express的applicationhost.config文件。 它具有除匿名禁用之外的所有身份validation模式。 我正在使用IIS Express作为debugging服务器。
据我所知,这是你应该做的一切,以解决访问被拒绝的错误,但我仍然在我的浏览器中收到以下错误信息:
错误消息401.2 .:未经授权:login失败,由于服务器configuration。 validation您是否有权根据您提供的凭据以及Web服务器上启用的身份validation方法来查看此目录或页面。
作为一个有趣的方面说明,如果我启用Windows身份validationlogin页面将正确显示。 但是,在部署网站时,这不起作用。 如果部署,然后激活Windows身份validation只会导致JavaScript窗口popup询问信用(不是我所做的forms)。
有谁知道如何解决这一问题。 我现在唯一的办法就是手动限制代码访问,让IIS让所有stream量通过。
编辑
作为最后的解决scheme,我只是手动validation用户。 至于IIS知道匿名访问是不受限制的,但会话在每个请求上被检查以validation用户已经login(会话是我存储每个用户的数据库连接对象的地方)。 对于静态内容,我只是使用HTTP处理程序,使用只读会话状态来validation服务之前的文件。