ReportViewer "Отсутствует параметр URL: имя" - PullRequest
4 голосов
/ 01 апреля 2009

В веб-приложении, над которым я работаю, 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 =" по какой-то причине она становится "& amp; Name =".

Я заметил, что во многих поисках в Google было много людей, имеющих ту же проблему, но не одно решение.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2009

Похоже, что-то искажает ваш URL где-то. У вас случайно есть прокси Bluecoat? Я видел кое-что о Bluecoat, искажающем URL.

Если это так, и у вас есть контроль над прокси, вы можете пробить туннель для своих отчетов. В противном случае вам, возможно, придется переписать URL-адрес на своем конце.

Проверьте здесь для получения дополнительной информации (последнее сообщение в теме имеет возможный обходной путь).

1 голос
/ 30 августа 2013

Это можно исправить глобально, проверяя заголовок запроса 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 (или Я думаю, вы могли бы просто проверить заголовки любых других затронутых продуктов, которые могут быть более безопасными.

...