URL重写 - REMOTE_USER始终为空

时间:2013-03-20 21:16:07

标签: iis iis-7

我需要创建一个URL重写规则,将REMOTE_USER值添加到查询字符串中。我将我的应用简化为绝对必需品。但是,在评估规则条件时,REMOTE_USER始终为空。

我的网站在IIS 7中配置,应用程序池使用与.NET 2.0的集成模式。我通过IIS管理器禁用了Anonymous Auth并在网站上启用了Windows Auth,我甚至将该行添加到web.config以防止匿名访问。这是我的两个文件。

的web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer> 
        <security> 
            <authorization> 
                <remove users="?" roles="" verbs="" />
            </authorization>
        </security>
        <rewrite>
            <rules>
                <clear />
                <rule name="Add login into URL" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                        <add input="{QUERY_STRING}" pattern="login" negate="true" />
                        <add input="{REMOTE_USER}" pattern="(.*)" />
                    </conditions>
                    <action type="Redirect" url="{HTTP_URL}?login={C:1}" redirectType="Temporary" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

的default.asp

<%= Request.ServerVariables("REMOTE_USER") %>

我的规则永远不会命中,因为{REMOTE_USER}在评估条件时总是空白(其他服务器变量显示在规则中,所以它只是{REMOTE_USER})。扭曲是default.asp显示我的REMOTE_USER值。

为什么会这样?谢谢

2 个答案:

答案 0 :(得分:0)

我不知道为什么我之前没有找到此链接。我怀疑,auth在URL重写规则后运行,而REMOTE_USER不能用于重定向。我想我必须编写自己的重定向模块。

http://forums.iis.net/t/1155169.aspx/1

答案 1 :(得分:0)

那么,你解决了这个问题吗?

显然,在某些情况下,ServerVariables已经为C#折旧了。

如果是这种情况,你需要这样做:

string login = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

如果您真的想使用ServerVariables,请记住它们在C#中是 CaSe Sensitive 。正确的套管几乎总是 UPPER ,以下是它们的列表:

List of ServerVariables