特殊字符组合“?/”在 XML 中未被正确解释?

Special character combination "?/" not being interpreted correctly in XML?

对于我们的顶级菜单,我们使用了一个自定义控件,该控件本质上是从 XML 文件中读取的。控件的名称是 SCS.MultiMenu.

其中一个菜单项是一份报告,其 link 如下:

http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport

报告正确生成URL。

因此,在 XML 文件中,菜单项如下所示:

<MenuItem Text="My report"  
Url="http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/Report"
PostBack="False"/>

当我单击此菜单项时,我被重定向到以下 link,这是不正确的:http://myserver/ReportServer/Pages/ReportViewer.aspx? 如您所见,它删除了问号后的所有内容。

我尝试使用转义序列来查看它是否接受正确的 URL(即?对于 问号 (?) 和 / 对于斜杠)但它继续在“?”之后剪切所有内容。我试过这样的事情:

http://MyServer/ReportServer/Pages/ReportViewer.aspx&#63;&#47;Folder/MyReport

可能是什么问题?我什至尝试将每个字符都转换为 escpae 序列,但没有用。

我想这可能是这个菜单控件中的一个错误,但它没有意义。

我包括了我尝试过的所有内容以及 URL 单击它时的样子:

http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?

http://MyServer/ReportServer/Pages/ReportViewer.aspx?path=%2FFolder%2FReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?path=/Folder/Report&

http://MyServer/ReportServer/Pages/ReportViewer.aspx&#63;&#47;Folder/MyReport
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?

http://MyServer/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport=
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?/Folder/MyReport=&

http://MyServer/ReportServer/Pages/ReportViewer.aspx?=/Folder/MyReport  
>> http://myserver/ReportServer/Pages/ReportViewer.aspx?=/Folder/MyReport&

谢谢

library 以特殊方式处理菜单项的 url:

它从 url 中截取查询字符串并解析它:

  1. & 拆分为单个参数
  2. = 拆分为名称值对。

(参见 QueryString.cs

如果第 2 步中没有 =,则参数将被静默丢弃,这就是为什么 您的查询字符串 /Folder/Report 消失了。

如果 /Folder/Report==/Folder/Report 在这种处理下存活下来并被您的服务器接受,您可以尝试。