ASP.NETアプリケーションでは、WebClientを使用してファイルをダウンロードします。このファイルはほとんどの場合会社のイントラネット上にあり、アクセスするには許可が必要です。VSでアプリケーションを実行するときはいつでも、自分のアクセス許可のコンテキストで実行されているため、正常に動作します。ただし、IISに展開すると、「ネットワークサービス」のアクセス許可のコンテキストで実行されます。これは、イントラネットに関しては基本的に存在しません(予想どおり)。
私はここでいくつかの悪い解決策を見ることができます:
- アプリケーション専用のアカウントを作成します。その詳細はweb.configにあり、文字列としてWebClientに提供されます。サービスのすべてのユーザーが同じ権限を持っているわけではないため、これは最適ではありません。
- ユーザー名とパスワードを入力する必要があります。会社は可能な限り証明書を使用するため、これは決して承認されません。パスワードはWindowsへのログインに使用され、それ以降のほとんどすべてがKerberosを使用したWindows認証を使用します。
最適な解決策は、アクセスしている(およびKerberosを介してWindows認証データを提供している)現在のユーザーの資格情報をWebClientオブジェクトに直接渡すことです。これは可能ですか?もしそうなら、どのように?誰かが私に言うことができれば、あるいは少なくとも私の悲惨さから私を解放して、それができないと私に言うことができれば、私はとても感謝しています。