如何在web.config中指定根(/)位置?

Mic*_*tin 53 asp.net web-config asp.net-authorization

如何在web.config中指定根位置以允许未经身份验证的用户访问它?

根位置由default.aspx提供,但用户通常看不到default.aspx,他们只是看到了http://mysite.com/.

所以我补充道

  <location path="~/default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
Run Code Online (Sandbox Code Playgroud)

如果用户点击mysite.com/default.aspx,则有效,但如果用户点击mysite.com/- 他仍然会被重定向到登录页面.

我试过<location path="~">(不利于)也<location path="~/">,<location path="">(现场完全失败),并不能使它发挥作用.

有任何想法吗?

Ale*_*kov 41

试试这个:

<system.web>
    <urlMappings enabled="true">
        <add url="~/" mappedUrl="~/default.aspx" />
    </urlMappings>
    <authorization>
        <allow roles="admin"/>
        <deny users="*" />
    </authorization>
</system.web>
<location path="Default.aspx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)


min*_*ali 6

只用

<location path=".">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
Run Code Online (Sandbox Code Playgroud)

或者不写路径,因为默认路径是root(.)

  • 我可以确认*dot*(并且根本没有路径)对于指向root是有效的,但是如果放在此位置的任何内容在web配置中的其他地方(位置外)指定,则会为重复的配置部分引发错误.人们必须删除"全局"定义才能使其发挥作用. (2认同)
  • 哦,同样重要的是:在这种情况下,root实际上意味着"Root及其下面的所有内容",因此这个解决方案实际上意味着您已授予对**整个**站点的匿名访问权限. (2认同)

Lef*_*tyX 1

如果您只想让未经身份验证的用户访问default.aspx,您可以使用

  <location path="Default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
Run Code Online (Sandbox Code Playgroud)

之前<system.web>并将该页面设置为网络服务器中的默认页面。
在 Visual Studio 中,您可以选择页面并“设置为起始页”。

如果您想允许访问根目录中的所有文件,则必须创建文件夹来放置需要由经过身份验证的用户访问的页面。

您可以创建一个安全文件夹,在其中放置所有受保护的页面并通过以下方式更改 web.config:

  <location path="Secure">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>
Run Code Online (Sandbox Code Playgroud)

去除

    <authorization>
        <deny users="?"/>
    </authorization>
Run Code Online (Sandbox Code Playgroud)

  • 这正是我在问题中发布的配置,正如我所指出的 - 它不起作用。对根目录 (mysite.com/) 的请求的处理方式与对 mysite.com/default.aspx 的请求不同 - default.aspx 的规则不适用 (6认同)