特殊字符组合“?/”在 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?/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&
谢谢
library 以特殊方式处理菜单项的 url:
它从 url 中截取查询字符串并解析它:
- 按
&
拆分为单个参数
- 被
=
拆分为名称值对。
(参见 QueryString.cs
)
如果第 2 步中没有 =
,则参数将被静默丢弃,这就是为什么
您的查询字符串 /Folder/Report
消失了。
如果 /Folder/Report=
或 =/Folder/Report
在这种处理下存活下来并被您的服务器接受,您可以尝试。
对于我们的顶级菜单,我们使用了一个自定义控件,该控件本质上是从 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?/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&
谢谢
library 以特殊方式处理菜单项的 url:
它从 url 中截取查询字符串并解析它:
- 按
&
拆分为单个参数 - 被
=
拆分为名称值对。
(参见 QueryString.cs
)
如果第 2 步中没有 =
,则参数将被静默丢弃,这就是为什么
您的查询字符串 /Folder/Report
消失了。
如果 /Folder/Report=
或 =/Folder/Report
在这种处理下存活下来并被您的服务器接受,您可以尝试。