ユーザー提供のURLからPDFをプルダウンしようとする既定のローカルシステム(Windows Server 2008 R2上)としてWindowsサービスを実行しています。そのURLがローカルイントラネットにある場合、ハッピーエンドがあります。 URLがより遠隔のURLを指している場合(例:irs.gov)、例外が発生する:WebClientがローカルシステムとして実行するとファイルをダウンロードできません
System.Net.WebException:リモートサーバーに接続できない---> System.Net.Sockets .SocketException:接続されたホストが一定の時間が経過しても正しく接続されなかったり、接続されたホストが応答しなかったため接続が失敗したため、接続が失敗しました...
"アカウントをローカルシステムから自分のアカウント(たとえば)に転送すると、リクエストが処理されます。しかし、私は実際のユーザーとしてWindowsサービスを実行することには消極的です(私はあまりにも保守的ですか?)。
私が使用しているコードは非常に簡単そうです:
string destinationFileName = ...;
Uri uri = ...;
using (var wc = new WebClient()) {
wc.DownloadFile(uri.AbsoluteUri, destinationFileName);
}
私はIEの設定のいくつかの種類を取得し、WebClientのインスタンスにそれらを追加する必要がありますか?もしそうなら、何?
ありがとうございました!
プロキシサーバーのような私には聞こえません... Netsh? –
私はプロキシサーバーが設定されていると思います。 winhttpのコンテキストでnetshを使用して "show proxy"と尋ねると、予想される設定が得られます。ローカルシステムには別の設定が保存されていますか?もしそうなら、そのユーザーをどのように指定すればよいですか? – Russ
ローカルシステムは、コンピュータアカウントの資格情報をネットワークリソースに渡します。企業のプロキシがWindows認証を使用している場合は、システム管理者がユーザーではなくコンピュータでアクセスできる可能性があります。 –