我在 VS2013(和 IIS)的默认文档上收到 401.2 错误。以下是我正在采取的步骤:
- 在VS2013中,右键选择“新建项目”
- 选择“ASP.NET Web 应用程序”,点击确定
- 选择“Empty”项目,勾选底部的“Web Forms”并点击OK
- 右键单击项目并选择“添加 | Web 表单” - 命名为 Default.aspx 并以“身份验证成功”作为页面内容
- 右键单击项目并选择“添加 | Web 表单” - 命名为 Login.aspx
- 添加“登录”作为页面内容
- 分配设置“e.Authenticated = true”的“身份验证”事件处理程序
- 如下所示更新 web.config
- 按 F5
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="Login.aspx" />
</authentication>
</system.web>
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="default.aspx" />
</files>
</defaultDocument>
<security>
<authorization>
<remove users="*"/>
<add accessType="Deny" users="?" />
<add accessType="Allow" users="*"/>
</authorization>
</security>
</system.webServer>
</configuration>
我看到的行为是http://localhost:12345/Default.aspx行为正确(总是)。换句话说,当我第一次访问 Default.aspx 时,它会将我重定向到 Login.aspx 页面。完成身份验证后,我可以看到 Default.aspx 页面。如果我注销并再次尝试转到 Default.aspx 页面,它会将我重定向到先登录。
但是,当我得到 / URL(没有 Default.aspx)时,我得到一个 401.2 错误(即使我已经通过了第一个身份验证)?
Default.aspx 页面被列为默认文档,如果我从 Web.Config 中删除“拒绝”行,则默认文档的行为与预期相同。但是什么时候拒绝?在 web 配置中列出,突然默认文档停止工作,我必须转到 /Default.aspx 以避免 401.2 错误。
任何建议为什么会这样?
我在事件日志中没有看到任何错误。使用 IISExpress(在 VS 中按 F5)或使用 IIS 直接通过浏览器访问公共 URL 时,我看到了相同的行为。