ReportViewer“缺少URL参数:名称”

时间:2009-04-01 12:54:37

标签: c# asp.net reporting-services reportviewer

在Web应用程序中,我正在使用ReportViewer不断给我一个错误“缺少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 =”由于某种原因它会变成“& amp; Name =”。

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

2 个答案:

答案 0 :(得分:2)

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

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

检查here以获取更多信息(该主题中的最后一篇文章有​​可能的解决方法)。

答案 1 :(得分:1)

您可以通过在每个请求开始时检查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标头(或者我想,您可以检查任何其他受影响产品的标题,这可能更安全。

相关问题