3

我们有一个从 3.5 升级的 ASP.NET 4.0 Web 应用程序。不幸的是,当用户尝试通过http://xxx.abc.com/访问 URL 时,用户会得到 /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>

谢谢。

4

1 回答 1

4

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

  • 使用标签 <allow users="?" />在您网站的根目录上设置。location
  • 如果上述方法不可行或不可行,请使用URL 重写模块而不是依赖默认文档。

我使用这个重写规则login.aspx从根 URL 返回一个 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>
于 2012-09-24T05:12:20.230 回答