Asp.net Page.RouteData是否返回WebResource.axd?
我的Global.asax中有一条规则,如下所示:Asp.net Page.RouteData是否返回WebResource.axd?,asp.net,vb.net,session,variables,webresource.axd,Asp.net,Vb.net,Session,Variables,Webresource.axd,我的Global.asax中有一条规则,如下所示: RouteTable.Routes.MapPageRoute("defaultRoute", "{*value}", "~/default.aspx") 实际上,任何物理上不存在的页面都会重定向到default.aspx。当该页面加载时,我在页面加载子模块中使用以下命令,如下所示: Dim prospect_url As String = Page.RouteData.Values("value") 然后我将其转换为会话变量,如下所示: S
RouteTable.Routes.MapPageRoute("defaultRoute", "{*value}", "~/default.aspx")
实际上,任何物理上不存在的页面都会重定向到default.aspx。当该页面加载时,我在页面加载子模块中使用以下命令,如下所示:
Dim prospect_url As String = Page.RouteData.Values("value")
然后我将其转换为会话变量,如下所示:
Session("prospect_url") = prospect_url
最终,该个人被重定向到另一个页面…在该页面中,我需要再次访问该值,但当我执行以下操作时:
Dim prospect_url As String = CStr(Session("prospect_url"))
我得到WebResource.axd作为prospect\u url的值。什么这是从哪里来的?该全局规则适用于被请求的任何资源,包括图像文件、脚本文件和任何其他资源(例如您看到的WebResource.axd)。
因此,这里发生的情况是,路由表规则导致它将每个请求保存到会话变量中,每次都覆盖最后一个值,当您自己查看会话变量时,它被保留在WebResource.axd(可能是另一个实例上的其他内容) 在我的博客上,我有一个解决方法:
但是它是用C#编写的,并且应该很容易翻译成VB.NET
但本质上,您应该在同一个请求中处理prospect url值,而不依赖会话变量,因为其他同时请求可能会在到达该值之前覆盖该值。该全局规则适用于被请求的任何资源,包括图像文件、脚本文件和任何其他资源(例如您看到的WebResource.axd。
因此,这里发生的情况是,路由表规则导致它将每个请求保存到会话变量中,每次都覆盖最后一个值,当您自己查看会话变量时,它被保留在WebResource.axd(可能是另一个实例上的其他内容) 在我的博客上,我有一个解决方法:
但是它是用C#编写的,并且应该很容易翻译成VB.NET 但本质上,您应该在同一个请求中处理prospect url值,而不依赖会话变量,因为其他同时请求可能会在到达该值之前覆盖该值。请尝试下面的代码:
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
...
}
private static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));
...
}
请尝试以下代码:
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
...
}
private static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));
...
}