1

タスクの 1 つでスクリプト タスク (C# コード) を使用する SSIS ジョブがありWebClient.DownloadFile、特定の Web サイトから (メソッドを使用して) CSV ファイルをダウンロードして後の段階で処理しようとします。

CSV のダウンロードは毎回失敗するので、問題を調査しようとしてこのブログに出会い、CSV ファイルの URL にVary: negotiatePragma: no-cacheその応答ヘッダーがある場合、ダウンロードが失敗することがわかりました。IE8 は、ホスト サーバーで利用可能な最新バージョンの IE であるため、それについては何も言えません。IE8 を使用して CSV ファイルをダウンロードしようとすると、次のエラーが表示されます。

ここに画像の説明を入力

CSV ファイルをダウンロードしようとしたときの応答ヘッダー:

ここに画像の説明を入力

次のフィルターを使用して Fiddler を実行すると、CSV のダウンロードが IE8 で期待どおりに機能します。

ここに画像の説明を入力

だから私の質問は、どうすればこれを行うことができWebClient.DownloadFileますか? Fiddler.Core を調べましたが、これを行う方法がわかりませんでした。また、次を使用して単純に Fiddler を実行することも検討しました。

  ProcessStartInfo startInfo = new ProcessStartInfo();
  startInfo.FileName = @"C:\PROGRA~1\Fiddler2\Fiddler.exe";

しかし、上記の方法の問題は、Process.Kill() が呼び出されたときに、Fiddler がそれ自体をクリーンアップする機会がなく、そのプロキシを残すことです...など、他のアプリケーションの接続が中断されます。

この状況に対処する方法を教えてくれる人はいますか? ありがとう

4

1 に答える 1

0

.NET WebClient の実装は、上記で引用した私の IEInternals ブログ投稿で説明されている制限の影響を受けません。WebClient は、WinINET ではなく、ソケットに直接基づいています。あなたの問題は、これらのヘッダーとは何の関係もありません。

于 2013-02-07T16:09:50.950 に答える