Loading a WebUserControl

本文关键字:WebUserControl Loading | 更新日期: 2023-09-27 18:10:58

我正在尝试加载一个具有会话id的WebUserControl,如:

string loadURL = "/CPCLeadScrubExceptions.ascx?&SessionID=" + SessionId;
Control control = LoadControl(loadURL);
holder.Controls.Add(control);

当我这样做时,我得到以下错误:"虚拟路径'/cpcleadscrubeexceptions .ascx?&SessionID=a545a9e1-4085-419b-aff0-1a27a76d01e4'映射到另一个应用程序,这是不允许的。"

Loading a WebUserControl

这个错误很明显。您正在尝试加载/CPCLeadScrubExceptions.ascx,它映射到另一个应用程序。

。你的应用程序是http://mydomain.com/myapp/Something.aspx,所以你不能访问任何不在/myapp/路径下的东西。你需要纠正你的路径是相对的(第一次尝试没有'/'也许)。

编辑:LoadControl采用控制路径,而不是带有查询字符串的请求URL。ASP。. NET使用参数来定位要加载的控件,它本身不发出请求,因此不需要SessionID。

您提供的路径不是虚拟路径(它们以~/开头)

加上会话id不应该在虚拟路径中(您在这里没有做请求),您可以在创建控件后设置它,如control.SessionID = SessionId

如果控件在您调用它的同一个应用程序中,您是否尝试过使用:

string loadURL = "~/CPCLeadScrubExceptions.ascx?&SessionID=" + SessionId;

(注意~符号)