Я попытался продублировать проблему с помощью простой реализации, которая соответствует вашей основной концепции.
Код:
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["file"] != null)
{
XmlDataSource XmlDataSource1 = new XmlDataSource();
XmlDataSource1.DataFile = "~/App_Data/" + Request.QueryString["file"];
Repeater1.DataSource = XmlDataSource1;
Repeater1.DataBind();
}
}
Markup:
<asp:Repeater runat="server" ID="Repeater1" DataSourceID="XmlDataSource1">
<ItemTemplate>
<asp:Label runat="server" ID="lbl" Text='<%# Eval("Name") %>'></asp:Label>
</ItemTemplate>
</asp:Repeater>
Это работает, когда я перехожу к «Default.aspx? File = West.xml», где west.xml - это XML-файл в моей папке App_Data. Когда я вписываю другой существующий XML-файл в строку запроса, он работает как ожидалось. Это быстро и грязно, но, возможно, это даст вам некоторое представление о сравнении его с существующим кодом.