ReportViewer“缺少URL参数:名称”

在我正在处理的Web应用程序中,ReportViewer不断给我一个错误“Missing URL parameter:Name”。 我找到了原因但不是解决方案。

从报表查看器导致exception的URL

Reserved.ReportViewerWebControl.axd?ReportSession=3bkunv2wte3wmnabkquyr1y0&ControlID=1e2b5870e07b46abac7fd32a9e0e4b9d&Culture=1033&UICulture=1033&ReportStack=1&OpType=ReportArea&Controller=ctl00_ASPxRoundPanel3_PageContent_Wizard1_ReportViewer1&PageNumber=1&ZoomMode=Percent&ZoomPct=100&ReloadDocMap=true&SearchStartPage=0&LinkTarget=_top 

如果您在查询字符串中注意到而不是“&name =”由于某种原因它变为“& Name =”。

我注意到在谷歌搜索中,有很多人遇到同样的问题而不是一个解决方案。

听起来有些东西会在某个地方破坏你的URL。 您是否偶然获得了Bluecoat代理? 我看到一些关于Bluecoat破坏URL的事情。

如果是这种情况并且您可以控制代理,那么您可能可以通过它为您的报告打孔。 否则,您可能必须重写您的URL。

请在此处查看更多信息(该主题中的最后一篇文章有​​可能的解决方法)。

您可以通过在每个请求开始时检查BlueCoat请求标头来全局修复此问题。 放在global.asax.cs中的这段代码解决了这个问题:

 protected void Application_BeginRequest(Object sender, EventArgs e) { // Fix incorrect URL encoding by buggy BlueCoat proxy servers: if (!String.IsNullOrEmpty(Request.ServerVariables["HTTP_X_BLUECOAT_VIA"])) { string original = Request.QueryString.ToString(); if (original.Contains(Server.UrlEncode("amp;"))) { HttpContext.Current.RewritePath(Request.Path + "?" + original.Replace(Server.UrlEncode("amp;"), "&")); } } } 

我不确定是否有任何其他代理服务器有相同的问题,但如果他们这样做,这可以很容易地适应检查&的存在& 在QueryString中,而不是检查BlueCoat标头(或者我猜,你可以检查任何其他受影响产品的标头,这可能更安全。