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

c#Web应用程序在使用自定义路由时会丢失用户上下文,c#,asp.net,forms-authentication,iroutehandler,C#,Asp.net,Forms Authentication,Iroutehandler,我正在使用C#和ASP.NET3.5构建一个非mvc网站。我有自定义路线工作得很好,并在其他网站上做了同样的事情。我也有很好的表单身份验证,并在其他网站上使用过表单身份验证,但从未同时使用这两种身份验证 在这个网站上,我可以登录(user/pass=demo/demo),只要我在一个包含.aspx的页面上,我就可以拥有一个用户上下文。例如,如果我转到www.mysite.com/default.aspx,我就有了一个用户上下文 要测试这一点:Request.IsAuthenticated返回tr

我正在使用C#ASP.NET3.5构建一个非mvc网站。我有自定义路线工作得很好,并在其他网站上做了同样的事情。我也有很好的表单身份验证,并在其他网站上使用过表单身份验证,但从未同时使用这两种身份验证

在这个网站上,我可以登录(user/pass=demo/demo),只要我在一个包含.aspx的页面上,我就可以拥有一个用户上下文。例如,如果我转到
www.mysite.com/default.aspx
,我就有了一个用户上下文

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

但是如果我转到
www.mysite.com/
我没有用户上下文:
请求。IsAuthenticated
返回false,而
System.Web.HttpContext.Current.user.Identity.IsAuthenticated
返回
“对象未设置为对象实例”

我还确认cookie已经设置好,可以使用Firefox查看

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

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

<authentication mode="Forms">
    <forms name="BrandpointContent" path="/" loginUrl="Login.aspx" protection="All" timeout="5000000"></forms>
</authentication>
<authorization>
    <deny users="?"/>
</authorization>
我对auth的路线和形式都相当精通,但这让我感到困惑


有人知道如何让它工作吗?

当然,当我发布这篇文章后,我在一篇建议的帖子中找到了答案(我无法通过搜索找到),答案就在这里:在你的web.config->system.webServer->模块中,你必须添加runAllManagedModulesForAllRequests=“true”,所以将此更改为:这解决了我的问题。希望这也能帮助其他人。你能给我们发送web.config吗?哈哈,是的,我也这么想:)
<authentication mode="Forms">
    <forms name="BrandpointContent" path="/" loginUrl="Login.aspx" protection="All" timeout="5000000"></forms>
</authentication>
<authorization>
    <deny users="?"/>
</authorization>
FormsAuthentication.SetAuthCookie("USERS-ID-HERE", true);