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

时间:2016-02-24 21:52:13

标签: c# asp.net xml asp.net-4.0

对于我们的顶级菜单,我们使用基本上从XML文件读取的自定义控件。该控件的名称为SCS.MultiMenu

其中一个菜单项是一个报告,其链接如下:

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

报告使用该网址正确生成。

因此,在XML文件中,menuitem如下所示:

<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&#63;&#47;Folder/MyReport

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

我认为这个菜单控件可能是错误的,但是没有意义。

我包含了我尝试过的所有内容以及点击它时网址的样子:

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&

由于

1 个答案:

答案 0 :(得分:0)

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

从网址中剪切查询字符串并解析它:

  1. &拆分为单个参数
  2. =拆分为名称值对。
  3. (见QueryString.cs

    如果在步骤2中没有=,则会以静默方式丢弃该参数,这就是原因 你的查询字符串/Folder/Report消失了。

    如果/Folder/Report==/Folder/Report在此处理后仍然存在并且您的服务器已接受,则可以尝试。