我正在使用使用表单身份验证的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
答案 0 :(得分:0)
我认为没有办法做到这一点。授权是基于URL的,授权模块在确定如何授权请求时似乎检查源 URL而不是目标URL。
就像6个月一样,失败的方式与我在其中一个项目中完全相同。我最终得到了你提出的解决方案 - 我的路由请求被放在一个“子文件夹”中,我用web.config
创建了一个本地authorization allow users=*
。
如果有办法解决这个问题,我也想听听应该怎么做。