在 XML 中未正确解释特殊字符组合 “?/”
本文关键字:组合 特殊字符 解释 XML | 更新日期: 2023-09-27 18:36:02
对于我们的顶部菜单,我们使用一个自定义控件,该控件本质上是从XML文件中读取的。控件的名称为 SCS.MultiMenu
。
其中一个菜单项是报表,其链接如下:
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"/>
当我单击此菜单项时,我被重定向到以下链接,这是不正确的: http://myserver/ReportServer/Pages/ReportViewer.aspx?
如您所见,它删除了问号后的所有内容。
我尝试使用转义序列来查看它是否接受正确的 URL(即? 表示问号 (?) 和/表示斜杠),但它继续剪切"?"之后的所有内容。我尝试了这样的事情:
http://MyServer/ReportServer/Pages/ReportViewer.aspx?/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?/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&
谢谢
库以特殊方式处理菜单项的 url:
它从 url 中剪切查询字符串并解析它:
- 按
&
拆分为单个参数 - 按
=
拆分为名称值对。
(见QueryString.cs
)
如果在步骤 2 中不存在=
,则以静默方式丢弃参数,这就是为什么查询字符串/Folder/Report
消失。
您可以尝试/Folder/Report=
或=/Folder/Report
是否在这种治疗中幸存下来并被您的服务器接受。