2012-03-15 23 views
0

ユーザー提供の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のインスタンスにそれらを追加する必要がありますか?もしそうなら、何?

ありがとうございました!

+0

プロキシサーバーのような私には聞こえません... Netsh? –

+0

私はプロキシサーバーが設定されていると思います。 winhttpのコンテキストでnetshを使用して "show proxy"と尋ねると、予想される設定が得られます。ローカルシステムには別の設定が保存されていますか?もしそうなら、そのユーザーをどのように指定すればよいですか? – Russ

+0

ローカルシステムは、コンピュータアカウントの資格情報をネットワークリソースに渡します。企業のプロキシがWindows認証を使用している場合は、システム管理者がユーザーではなくコンピュータでアクセスできる可能性があります。 –

答えて

1

NT AUTHORITY \ NETWORK SERVICEでサービスを実行してみてください。それがうまくいかない場合は、適切に制限された権利を持つユーザーアカウントを作成し、そのアカウントでサービスを実行します。

また、Windows Server 2008 R2で実行している場合は、Managed Service Accountsトピックを見てください。

0

LocalSystemはネットワークリソースにアクセスできません。 NETWORK SERVICEアカウントを使用してください。

EDIT: ローカルシステムには、使用しているファイルシステムパスへの書き込み権限がない可能性があります。

+0

誰が言った? http://msdn.microsoft.com/en-us/library/windows/desktop/ms684190(v=vs.85).aspx –

+0

匿名アクセスが可能です。それは単にマシンとして認証することができません –

+0

はい、私は今それを参照してください。私は過去にネットワーク共有にアクセスしようとしているときにこれを実行しました。マインドはアクセス無しにジャンプしました。しかし、ネットワーク共有への認証はありませんでした。私の間違い。 –