IIS 7.5中的ASP.Net 4表单身份验证 - 默认文档不再工作

时间:2012-02-24 16:10:16

标签: asp.net iis-7 forms-authentication

我最近将.Net 3.5的网络应用程序迁移到.Net 4,并在IIS 7.5中将应用程序池更改为集成模式。这个应用程序有两个部分:第一部分向公众开放,第二部分仅通过登录。我使用表单身份验证登录,因此在根web.config中配置

<authentication mode="Forms">
  <forms loginUrl="~/private/login.aspx" protection="All" timeout="20" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="~/private/default.aspx" cookieless="UseCookies" enableCrossAppRedirects="true" />
</authentication>

在root web.config中,我有默认授权来拒绝未经身份验证的用户,因此:

<authorization>
  <deny users="?" />
</authorization>

但是我在root web.config中配置了以下设置,以便每个人都能看到欢迎页面:

<location path="Default.aspx">
<system.web>
  <authorization>
    <allow users="?,*" />
  </authorization>
</system.web>

这已经很好用了很多年但是现在,如果我没有明确地将Default.aspx放在URL中,则表单重定向模块会导致登录页面被提供。我已经验证我已正确配置了默认页面,并且在IIS7中启用了它们。我也尝试在web.config中指定它们。我已经验证DefaultDocumentModule是在DirectoryListing模块之前排序的。

如果我删除元素,问题会“消失”,但效果将是默认允许所有用户,这是完全不可取的。

我没有想法。建议?

由于

2 个答案:

答案 0 :(得分:0)

似乎是某种默认的doc问题。如果您在站点的IIS管理器中查看“默认文档”列表中的内容。是否有可能列表中除Default.aspx以外的其他内容更高?如果在您的根网站中找到与此匹配的内容,它将首先尝试去那里,然后重定向到登录。

您是否在web.config中明确设置默认文档?如:

<defaultDocument enabled="true">
        <files>
            <clear />
            <add value="Default.aspx" />
            <add value="Default.htm" />
            <add value="index.htm" />
            <add value="index.html" />
            <add value="iisstart.htm" />
        </files>
    </defaultDocument>

答案 1 :(得分:0)

好的,我有一位微软高级支持工程师为我挖掘这个。我们一起坐在我的工作站,完成了(a)环境和应用程序配置以及(b)可能的解决方案。

他引用了这个MS "Fast Publish" article,这表明我通过MMC从IIS中删除了ExtensionLessURL处理程序。好吧,我们是一个庞大的组织,服务器退出了wazoo,我无法保证这种变化总能得到尊重,所以我不想这样做。我们尝试使用web.config删除它们但是没有用。

所以,我给他看了this solution from another StackOverflow thread (posted by Dmitry.Alk),他说这是一个很好的解决方案。对于这种特殊情况,它很有效

快速发布文章引用了此修补程序A update is available that enables certain IIS 7.0 or IIS 7.5 handlers to handle requests whose URLs do not end with a period,我必须将其出售给我们的IT“部门”。

我不会把我在这里所写的内容称为“答案”,但我想分享我学到的东西以防其他人在这个帖子上发生。