WebClient を使用して Reporting Services からレポートをエクスポートしようとすると、問題が発生しました。
コードを使用してパラメーターを含まないレポートをロードすると、すべて正常に動作しますが、パラメーターを渡そうとすると、500 サーバー エラーが発生します。
Web ブラウザーで Reporting Services の URL にアクセスすると、レポートが正常に読み込まれ、クエリ文字列で指定されたパラメーター値が取得され、レポートが Excel 形式で返されます。
これは私が過去にやったことがあるので、何が問題なのか本当に困惑しています。以下は、私が使用しているコードの一部です。これは、パラメーターを持たないレポートで正常に機能すると言われています。これは決して最終的なコードではありませんが、最初にパラメーターを使用して動作させる必要があります
string url = "http://localhost/Reportserver?/ReportsFolder%2fTheReport&rs:Format=EXCEL&rs:Command=Render&Start=15-01-2013&End=15-01-2013";
WebClient c = new WebClient();
c.UseDefaultCredentials = true;
c.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
byte[] data = c.DownloadData(url);
Web ブラウザーでリンクを開いたときに問題なく動作するという事実は、私を困惑させます。この問題は、パラメーターを持つレポートでのみ発生します。
アップデート
どこが間違っているのか、それは日付の形式であることに気付きました。英国形式の日付 dd/mm/yyyy (15-01/2013) を入力していました
URL を Web ブラウザーに貼り付けるときに、UK 形式で提供しても問題なく機能するため、これはまだ奇妙な考えです。
上記の WebClient コードを使用して英国の日付を指定すると、エラーが発生します。どちらの方法を使用しても異なる理由はわかりませんが、私にとってはもはや問題ではありませんが、なぜそうなのかを知りたいと思います...