2009-04-01 18 views
4

ReportViewerで作業しているWebアプリケーションで「URLパラメータがありません:名前」というエラーが表示され続けます。私は原因を見つけましたが、解決策はありません。それはなっ何らかの理由であなたが代わりにクエリ文字列に気づいた場合、レポートビューア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 

から例外を引き起こしている

URL「&名=」「&アンペア;名=」。

私は数え切れないほどのグーグル検索で、同じ問題を抱えているが1つの解決策がない人が多いことに気付いた。

答えて

2

何かのような音がどこかであなたのURLをマングリングしています。偶然、Bluecoatプロキシを適所に置いていますか?私はURLをマングリングするBluecoatについて何かを見ました。

この場合、プロキシを制御できるため、レポート用にトンネルを作成することができます。それ以外の場合は、最後にURLを書き直す必要があります。

詳細については、hereを確認してください(スレッド内の最後のポストには回避策があります)。

+0

同じことがありました。 BlueCoatのようなバグのあるプロキシサーバーは、URLを正しくデコードしないので、Request.Querystringを呼び出すときに値を見つけられません。 – NickG

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;"), "&")); 
     } 
    } 
} 

他のプロキシサーバーは、同じ問題を持っているが、彼らがしなければ、これを簡単にチェックするように適合させることができれば、私はわからないんだけどBlueCoatヘッダーをチェックするのではなく、QueryStringに&が存在するかどうかを確認することができます(他の影響を受ける製品のヘッダーを確認するだけで安全です)。

関連する問題