在webform中使用MapPageRoute时,ReturnUrl无法正常工作

时间:2014-10-25 10:51:05

标签: asp.net webforms forms-authentication

我有一个在ASP.NET 4.5和ASP.net Identity 2.0中开发的现有Web应用程序。我在RouteConfig.cs中为路由器设置如下:

public static void RegisterRoutes(RouteCollection routes)
{
   var settings = new FriendlyUrlSettings();
   settings.AutoRedirectMode = RedirectMode.Permanent;
   routes.EnableFriendlyUrls(settings);
   routes.MapPageRoute("manage-user-acc", "manage-user-acc", "~/Account/Manage.aspx", true);
}

manage.aspx页面必须登录才能查看此内容。当应用程序运行时,我在地址栏中键入url,如下所示:

http://localhost:64296/manage-user-acc

returnUrl无效,错误是

  

访问提供此服务所需的资源时发生错误   请求。您可能没有权限查看请求的内容   资源。

但是当我在地址栏中输入这样的url时

http://localhost:64296/Account/Manage

returnUrl正在运行并返回登录页面,如下所示:

http://localhost:64296/Account/Login?ReturnUrl=%2Faccount%2Fmanage

任何人都可以帮助我找出我在做错的地方。或者我如何调试所有过程

1 个答案:

答案 0 :(得分:0)

这看起来像个错误。您可以通过验证路由而不是物理页面来绕过它。删除对MapPageRoute

的调用中的布尔值
routes.MapPageRoute("manage-user-acc", "manage-user-acc", "~/Account/Manage.aspx");

并拒绝在根Web.config

中对路由进行未经身份验证的访问
<location path="manage-user-acc">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>