2012-04-03 139 views
3

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

我有以下的路线设置:

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(位置路径= “LOC”)它的工作原理,但我真的很喜欢它的根源。有没有办法做到这一点?

这是.NET V4和我要支持IIS 7和IIS 7.5

+0

你的http:// server/minneapolis路径是否是安全的...我的意思是用户需要通过身份验证才能访问http:// server/minneapolis ...?如果可能的话,你可以将你的页面代码放在后面? – NiK 2012-04-03 20:27:28

+0

我不希望它是安全的,但取决于它是如何配置它是或不是。您希望查看后面的代码的哪个页面? – Dean 2012-04-04 15:06:01

回答

0

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

就像6个月刚刚失败完全一样,你在我的项目之一。我结束了你提出的解决方案 - 我的路由请求被放在一个“子文件夹”中,我创建了一个本地web.configauthorization allow users=*

如果有解决方法,我也想听听它应该如何完成。