[英]ASP.Net 4 Forms Authentication in IIS 7.5 - Default Document No Longer Working
我最近将一个Web应用程序从.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>
在根web.config中,我具有默认权限以拒绝未经身份验证的用户,因此:
<authorization>
<deny users="?" />
</authorization>
但是我在根web.config中配置了以下设置,以允许所有人看到欢迎页面:
<location path="Default.aspx">
<system.web>
<authorization>
<allow users="?,*" />
</authorization>
</system.web>
多年来,这一直很好,但是现在,如果我没有在URL中明确地放置Default.aspx,则表单重定向模块会导致登录页面得到处理。 我已经确认我的默认页面配置正确,并且已在IIS7中启用它们。 我也尝试过在web.config中指定它们。 我已经验证了DefaultDocumentModule在DirectoryListing模块之前已排序。
如果删除该元素,问题将“消失”,但结果是默认情况下将允许所有用户使用,这是完全不希望的。
我没主意了。 有什么建议吗?
谢谢
一世
似乎是某种默认的文档问题。 如果您在该站点的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>
好的,我让一位Microsoft Premier Support工程师为我进行了深入研究。 我们一起坐在我的工作站上,经历了(a)环境和应用程序配置以及(b)可能的解决方案。
他引用了此MS“快速发布”文章 ,该文章建议我通过MMC从IIS中删除ExtensionLessURL处理程序。 好吧,我们是一个庞大的组织,服务器无济于事,我不能保证总是会兑现这一改变,所以我不想这样做。 我们尝试使用web.config删除它们,但是没有用。
因此,我向他展示了另一个StackOverflow线程(由Dmitry.Alk发布)中的解决方案 ,他说这是一个不错的解决方法。 对于这种特殊情况,它非常有用 。
快速发布文章引用了此修补程序。已有可用的更新,该更新使某些IIS 7.0或IIS 7.5处理程序能够处理其URL不以我必须卖给我们的IT“部门” 的时期结尾的请求 。
我不会将我在此处写的内容称为“答案”,但我想分享自己所学到的内容,以防其他人在此线程上发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.