我正在尝试加载一个具有会话id的WebUserControl,例如:
string loadURL = "/CPCLeadScrubExceptions.ascx?&SessionID=" + SessionId;
Control control = LoadControl(loadURL);
holder.Controls.Add(control);当我这样做时,我得到以下错误:“虚拟路径'/CPCLeadScrubExceptions.ascx?&SessionID=a545a9e1-4085-419b-aff0-1a27a76d01e4‘映射到另一个应用程序,这是不允许的。”
发布于 2011-10-11 03:41:28
好吧,错误是很明显的。您正在尝试加载/CPCLeadScrubExceptions.ascx,它映射到另一个应用程序。
例如,您的应用程序是http://mydomain.com/myapp/Something.aspx,因此您无法访问/myapp/路径以外的任何内容。您需要将您的路径更正为相对路径(第一次尝试时可能不带'/‘)。
编辑:LoadControl采用控制路径,而不是带有查询字符串的请求URL。ASP.NET使用参数来定位要加载的控件,它本身不发出请求,因此不需要SessionID。
发布于 2011-10-11 03:42:19
您提供的路径不是虚拟路径(它们以~/开头)
另外,会话id不应该在虚拟路径中(这里不是请求),您可以在创建控件后设置它,如control.SessionID = SessionId
发布于 2011-10-11 03:42:25
如果该控件位于您从中调用它的同一个应用程序中,您是否尝试过使用:
string loadURL = "~/CPCLeadScrubExceptions.ascx?&SessionID=" + SessionId;(请注意~标志。)
https://stackoverflow.com/questions/7717774
复制相似问题