gpt4 book ai didi

c# - Web 窗体中的 IRouteHandler : Routing requests that require HttpContext. 用户

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:40 24 4
gpt4 key购买 nike

我正在尝试向 Asp.Net Web Forms 应用程序(在 IIS 7 下运行,集成模式)添加一个非常基本的路由:对于到达 http://mydomain.com/foo/ 的请求我想显示动态页面 ( http://mydomain.com/foopage.aspx ) 的结果。

我已经创建了一个 RouteHandler 来执行所有这些并且它似乎路由正确。

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var page = System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/foo.aspx", typeof(MyApp.Web.Foo)) as MyApp.Web.Foo;
return page as IHttpHandler;
}

问题是,在我的 RouteHandler 的 GetHttpHandler 方法中,当前用户的所有实例(requestContext.HttpContext.User、System.Web.HttpContext.Current.User)都是空的。遗憾的是,foo.aspx 需要知道当前用户是什么(用于登录控件、角色等),因此呈现页面会抛出空引用异常。我的猜测是,这些路由处理程序在 Asp.Net 有机会连接 HttpContext 和用户信息之前就已经启动了。有解决方法吗?

PS - 我意识到这可以通过在 http://mydomain.com/foo/default.aspx 的页面中执行 Server.Transfer 来完成.我想为这类事情使用路由,而不是让一堆无用的文件夹把事情搞得一团糟。

谢谢!

最佳答案

查看 this 的答案问题,非常相似。

关于c# - Web 窗体中的 IRouteHandler : Routing requests that require HttpContext. 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com