c#Web应用程序在使用自定义路由时丢失用户上下文

时间:2014-03-04 15:54:57

标签: c# asp.net forms-authentication iroutehandler

我正在使用 C# ASP.NET 3.5构建非mvc网站。我有自定义路线运作良好,并在其他网站上做了同样的事情。我也有表单身份验证运行良好,并在其他网站上使用表单身份验证,但从来没有同时使用。

在这个网站上http://ec2-23-20-231-127.compute-1.amazonaws.com/我可以登录(user / pass = demo / demo)并拥有用户上下文,只要我在包含.aspx的页面上。例如,如果我转到www.mysite.com/default.aspx我有一个用户上下文。

要测试这个:Request.IsAuthenticated返回 true 和`System.Web.HttpContext.Current.User.Identity.IsAuthenticated *也返回 true

但如果我转到www.mysite.com/我没有用户上下文:Request.IsAuthenticated返回 false System.Web.HttpContext.Current.User.Identity.IsAuthenticated返回"Object not set to instance of an object"

我还确认正在设置cookie并可以使用Firefox查看。

我的路线设置如下(在 Global.asax 中):

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup
    RegisterRoutes(System.Web.Routing.RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.Add("Default", new Route("", new Brandpoint.DefaultRouteHandler()));
    routes.Add("Category", new Route("{catTitle}/", new Brandpoint.CategoryRouteHandler()));
    routes.Add("Article", new Route("{catTitle}/{articleTitle},{articleId}", new Brandpoint.ArticleRouteHandler()));
} 

表单身份验证的设置如下:

<authentication mode="Forms">
    <forms name="BrandpointContent" path="/" loginUrl="Login.aspx" protection="All" timeout="5000000"></forms>
</authentication>
<authorization>
    <deny users="?"/>
</authorization>

设置cookie只是:

FormsAuthentication.SetAuthCookie("USERS-ID-HERE", true);

我非常精通两种路线和形式认证,但这让我很难过。

任何人都知道如何让它发挥作用?

0 个答案:

没有答案