IIS 7 ASP.NET 4.0忽略默认文档

时间:2012-09-24 04:49:03

标签: asp.net iis-7

我们有一个从3.5升级的ASP.NET 4.0 Web应用程序。不幸的是,当用户尝试通过http://xxx.abc.com/访问网址时,用户会获得/login.aspx?ReturnUrl=%2f。

据我所知,这似乎是.NET 4.0和IIS7上的行为。这导致负载均衡器出现问题,因为它返回 302状态代码。有些原因 负载均衡器已配置为查找http 200状态代码。

我们是否可以通过任何方式修复ASP.NET 4.0的行为,以便在用户点击http://xxx.abc.com/时显示login.aspx而无需重定向?

我在下面尝试了这个但是没有用:

<system.webServer>
    <defaultDocument>
      <files>
        <add value="Login.aspx" />
      </files>
    </defaultDocument>
</system.webServer>

感谢。

1 个答案:

答案 0 :(得分:4)

这不是.NET 4 / IIS 7的行为,它是表单身份验证的行为。似乎认证模块首先运行,并在默认文档模块获得机会之前触发重定向。以下是我建议的解决方法:

  • 使用<allow users="?" />标记在您网站的根目录上设置location
  • 如果上述情况不可行或不切实际,请使用URL Rewrite module,而不是依赖默认文档。

我使用此重写规则从根URL返回login.aspx,状态代码为200:

<rewrite>
  <rules>
    <rule name="RewriteURL1" stopProcessing="true">
      <match url="" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
      </conditions>
      <action type="Rewrite" url="login.aspx" />
    </rule>
  </rules>
</rewrite>