- PR -

[ASP .Net C#]File.Copyでエラーが出てしまいます。

1
投稿者投稿内容
ryo
会議室デビュー日: 2009/01/22
投稿数: 3
投稿日時: 2009-01-22 18:00
今あるプログラムを書いていて、ファイルをコピーする処理でエラーが出てしまいます。(テスト環境だとうまく動作しているのですが、本番環境で動作していません。)


File.Copy(strProgramPath, strCategoryFile,true);

と書いていて、実行すると、
「UnauthorizedAccessException、
パス 'C:/Projects/Common/Programs/aaa.txt' へのアクセスが拒否されました。」

となってしまいます。

実行するにあたって、以下のポイントを確認しています。
・上記のパスにファイルが存在している。
・上記のパスのファイルは読み取り専用になっていない。
・上記のフォルダがIUSR、SYSTEM、USERSがフルコントロールの権限を持っている。

同じような設定でテスト環境では問題無く動作しているので困っています。
どなたか識者の方、アドバイス頂けると助かります。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-01-22 18:04
どこにある何を
どこにコピーしようとしているのかがわかりません。

aaa.txtが別のアプリで排他掛かっている
とかそういうことはありませんか。
ryo
会議室デビュー日: 2009/01/22
投稿数: 3
投稿日時: 2009-01-22 18:20
説明不足で申し訳ございません。

>File.Copy(strProgramPath, strCategoryFile,true);
コピー元は普通のテキスト形式のファイルです。
コピー先は別のフォルダになりますが、名前を変えて保存しています。

>aaa.txtが別のアプリで排他掛かっている
>とかそういうことはありませんか。
今試してみたのですが、手動で名前の変更、コピー、削除が問題なく出来るので掛かっているということは無いと思います。

よろしくお願いします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2009-01-22 18:21
>・上記のフォルダがIUSR、SYSTEM、USERSがフルコントロールの権限を持っている。

ASP.NETだったらこれらのユーザは関係ないですね。
http://www.microsoft.com/japan/msdn/enterprise/pag/securityguidance/paght000015.aspx
このあたりでしょう。

[ メッセージ編集済み 編集者: どっとねっとふぁん 編集日時 2009-01-22 18:21 ]
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2009-01-22 18:31
件名に ASP.NET と入っていることからの推測です。
実行環境は XP、本番環境は Windows Server 2003 もしくは Windows Server 2008 といった所ではないでしょうか。

恐らく IIS のワーカープロセスアカウントのアクセス権の問題だと思います。
IIS 6.0 以降ではワーカープロセスアカウントの権限はかなり低くなっているため、無闇にファイルを作成することはできません。
ワーカープロセスアカウントに特定のフォルダに対するアクセス権を付加するなり、
特定のフォルダに対するアクセス権を持つアカウントを用意してワーカープロセスアカウントとして使用するなり、
或いはアカウントの偽装を使用するなりの処置が必要です。
なお、IIS 6.0 と IIS 7.0 でも、ワーカープロセスアカウントの[del]名前[/del]所属するグループ (6.0 なら IIS_WPG、7.0 なら IIS_IUSR) が異なるようですので注意してください。


_________________
C#と諸々

[ メッセージ編集済み 編集者: よこけん 編集日時 2009-01-22 18:33 ]
ryo
会議室デビュー日: 2009/01/22
投稿数: 3
投稿日時: 2009-01-22 20:49
返答下さった皆様、ありがとうございます。

無事解決しました。m(__)m

SYSTEM USERとIWAMユーザの権限を追加して解決しました。

本当にありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)