ReportViewer“缺少 URL 参数:名称”
Posted
技术标签:
【中文标题】ReportViewer“缺少 URL 参数:名称”【英文标题】:ReportViewer "Missing URL parameter: Name" 【发布时间】:2010-10-16 20:42:19 【问题描述】:在一个 Web 应用程序中,我正在使用 ReportViewer 一直给我一个错误“缺少 URL 参数:名称”。我找到了原因,但没有解决办法。
导致报表查看器异常的 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="。
我注意到在大量的谷歌搜索中,有很多人有同样的问题,但没有一个解决方案。
【问题讨论】:
【参考方案1】:听起来好像有什么东西在某处破坏了您的 URL。您是否有一个 Bluecoat 代理?我看到了一些关于 Bluecoat 破坏 URL 的内容。
如果是这种情况,并且您可以控制代理,那么您也许可以通过它获得一条隧道以用于您的报告。否则,您可能不得不重写您的 URL。
查看here 了解更多信息(线程中的最后一篇帖子有一个可能的解决方法)。
【讨论】:
我也遇到过同样的事情。像 BlueCoat 这样的有缺陷的代理服务器无法正确地对 URL 进行 html 解码,因此当您尝试调用 Request.Querystring 时,它找不到值。【参考方案2】:您可以通过在每个请求开始时检查 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 标头(或我想,您可以只检查任何其他受影响产品的标题,这可能更安全。
【讨论】:
以上是关于ReportViewer“缺少 URL 参数:名称”的主要内容,如果未能解决你的问题,请参考以下文章