在重定向到登录页面时,如何使ASP.NET身份验证保留Url Fragment?

Jad*_*ias 1 .net c# asp.net authentication url

我在下面的Web.Config中插入配置后

<authentication mode="Forms">
  <forms name="appNameAuth"
   path="/" loginUrl="login.aspx" protection="All" timeout="30">
    <credentials passwordFormat="Clear">
      <user name="user" password="password" />
    </credentials>
  </forms>
</authentication>
<authorization>
  <deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)

所有要求

Menu.aspx#fragment
Run Code Online (Sandbox Code Playgroud)

被重定向到

login.aspx?ReturnUrl=/Menu.aspx
Run Code Online (Sandbox Code Playgroud)

我希望它能被重定向到

login.aspx?ReturnUrl=/Menu.aspx#fragment
Run Code Online (Sandbox Code Playgroud)

如何实现理想的行为?

Eoi*_*ell 5

#fragment锚标记是URL的客户端(浏览器)组件.据我所知,它没有被发送到WebServer,因此服务器端没有关于它作为重定向的一部分的线索.

编辑

你可以检查你的IIS日志并确认,因为我99%确定不是这种情况.

从我本地机器上的快速测试.

  1. 尝试浏览

    HTTP://localhost/formstest/private.aspx#test

  2. 获取重定向

    HTTP://localhost/formstest/login.aspx重定向= HTTP%3A%2F%2flocahost%2fformstest%2fprivate.aspx#测试?

    (请注意,#未作为重定向网址的一部分进行转义.

  3. 检查IIS是否第一次点击.

    2010-04-12 13:36:45 W3SVCxxx 127.0.0.1 GET /formstest/private.aspx 80 - DETAILS SNIPPED - 302 0 0

    (注意302重定向和#testURL上的令牌缺失

  4. 检查IIS是否有重定向命中.

    2010-04-12 13:36:46 W3SVCxxx 127.0.0.1 GET /formstest/login.aspx redirect = http%3a%2f%2flocahost%2fformstest%2fprivate.aspx 80 - DETAILS SNIPPED - 200 0 0

    (有你的200 OK HTTP响应,但仍然没有 #test

就像我说的那样,服务器对#anchor一无所知.它只在客户端,无论是在请求发出之前还是之后放入,或者是否使用JQuery更新它...它都不会发送到服务器.