使用窗体身份验证在ASP.NET Web窗体中进行路由

时间:2012-04-03 19:13:07

标签: asp.net routing webforms

我正在使用使用表单身份验证的ASP.NET Web表单应用程序。问题是,它忽略了我的路线并重定向到login.aspx页面。

我有以下路线设置:

routes.MapPageRoute("/locale", "{locale}", "~/shorturl/transfer.aspx", 
            false, 
            new RouteValueDictionary { { "locale", "[a-z]{2}" } });

如果我使用以下网址:http://server/minneapolis,则会转到登录页面。如果我将以下内容添加到Web.Config,那么它“正常”并转到transfer.aspx页面。

<location path="minneapolis"> 
    <system.web> 
      <authorization> 
        <allow users="*"/> 
      </authorization> 
    </system.web> 
 </location>

我不想将所有语言环境添加到web.config,似乎打败了目的。

我也可以改变路线(注意我添加了“/ loc /”):

    routes.MapPageRoute("/locale", "/loc/{locale}", "~/shorturl/transfer.aspx", 
            false, 
            new RouteValueDictionary { { "locale", "[a-z]{2}" } });

之后我可以将Web.Config位置路径更改为loc(location path =“loc”)并且它可以正常工作,但我真的更喜欢将它放在根目录下。有没有办法做到这一点?

这是.NET v4,我必须支持IIS 7和IIS 7.5

1 个答案:

答案 0 :(得分:0)

我认为没有办法做到这一点。授权是基于URL的,授权模块在确定如何授权请求时似乎检查 URL而不是目标URL。

就像6个月一样,失败的方式与我在其中一个项目中完全相同。我最终得到了你提出的解决方案 - 我的路由请求被放在一个“子文件夹”中,我用web.config创建了一个本地authorization allow users=*

如果有办法解决这个问题,我也想听听应该怎么做。