2009-08-02 22 views
5

実行時にWebサーバーにファイルを書き込もうとするASP.NETアプリケーションがあります。私の開発環境では、これが動作します。しかし、私は本番サーバーにデプロイし、私はコードを実行したときに、私が述べてエラーが表示さ:ASP.NET +パスへのアクセスが拒否されました

"Access to the path 'C:\Inetpub\wwwroot\MyWebApp\DirToWriteTo\' is denied." 

を私の運用サーバーは、Window Server 2003のマシンです。 Webアプリケーションは、IUSR_TEMPLATEアカウントによる匿名アクセスを許可するように設定されています。

私は間違っていますか?

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

答えて

1

匿名ユーザーがその場所への書き込みアクセス権を持っていない可能性が最も高い問題です。

私が行うことは、書き込む場所のweb.configエントリを作成し、その設定キーを書き込み可能なディレクトリとして使用することです。これにより、必要に応じて、本番サーバーと開発マシンの構成を個別に行うことができます。

次は、単にユーザーIUSER_TEMPLATEにコンフィギュレーションで定義されているディレクトリへの書き込みアクセス権を与える、またはThorarinとして、あなたのWeb.configファイルに身元偽装を設定する必要があり、その場合にはネットワークサービスは、言ったあなたができるように、ユーザーを指定します(アプリケーションプールからユーザーを構成しない限り)。それは問題を解決するはずです。

+1

'Web.config'が' 'セクションに' 'を持つ場合のみです。それ以外の場合は、アプリケーションプールのIDセットが使用されます。デフォルトでは、* Network Service *(アクセスは非常に制限されています) – Thorarin

+0

これは本当です。私はそれを最初に考えなかった。それを含めるように私の答えを更新します。 –

1

は、Windows 2008以上持っている場合は、IIS_IUSRSに書き込み権限を与えてみてください。

(ネットワークサービスは、過去に私のために働いています。私はhere読んだものから、それはサーバのOSに依存します。)私の場合は

enter image description here

0

、Visual Studioの2015年には、既存のプロジェクトのを変更IIS AppPoolユーザーをDefaultAppPoolの既定値に設定すると、アクセス許可エラー、構成エラー、役割プロバイダーエラー、およびNULL参照エラーが発生しました。これを見つけて、フォルダのアクセス許可が設定されているアプリケーションプールに戻した後、再び作業が開始されました。