0

我正在使用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返回falseSystem.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);

我相当精通路由和表单身份验证,但这让我很难过。

有谁知道如何使它工作?

4

0 回答 0