2009-07-30 9 views
0

My ASPページは、共有ディレクトリからファイルを読み取り、それをユーザーに送信します。IISサービスがローカルシステムアカウントとして実行されているため、共有ディレクトリのアクセス許可を与えるにはどうすればよいですか。

 Response.Clear(); 
     Response.ContentType = "application/octet-stream"; 
     Response.AddHeader("Content-Disposition:", string.Format("attachment; filename={0}", fileName)); 
     Response.WriteFile(filePath); 
     Response.End(); 

このASPコードはWebサーバー上で実行されますが、IISがローカルシステムアカウントとして実行されているとします。 filePathはファイルサーバー上のファイルを指します。\\ fileserver \ shared \ abc.pdf

ローカルマシンでコードをデバッグすると、ファイルはASPページから正しく読み込まれます。しかし、私はそれをWebサーバー上で実行すると、ファイルを読み取ることができません。 \ fileerver \ sharedを与えるにはどのような権限が必要ですか?そのため、ASPページでファイルを正しく読み取ることができますか?ローカルシステムは、権限ページで有効なユーザーログオンではないことは明らかです。

+0

同じサーバーが提供する他のすべてのWebページに影響を与えるため、アプリケーションプールIDを変更することはできません。現在の環境では、パスワードをファイルに保存することもできません。 ファイルサーバー上の別のプロセスへのリモート呼び出しを行い、リモート呼び出しを介してファイルの内容を渡すことを考えます。それとももっと単純な方法がありますか? – yyykk

答えて

1

IISは、デフォルトで、アプリケーションプールを「ネットワークサービス」として実行します。これは、IISボックスのローカルアカウントです。ネットワーク共有にアクセスする場合は、共有にアクセスできるアカウント(ドメインアカウントなど)にアプリケーションプールIDを再設定する必要があります。

両方のボックスがドメイン内にない場合は、両方のマシン(両方のマシン上で同一)でユーザー名とパスワードを作成し、アプリケーションプールに使用し、共有のアクセス許可を設定して)ユーザーがファイルサーバーにアクセスしました

0

共有にアクセスできるユーザーになりすますことがあります。

<identity impersonate="true" userName="accountname" password="password" /> 
+0

うわー、常にweb.configにパスワードを埋め込むのは悪い考えです。このルートに行く場合は、web.configを暗号化して非表示にする必要があります。 – blowdart

関連する問題