4

まず、私は Windows ファイルのアクセス許可の専門家ではないので、ここで欠けている非常に基本的なものがあるかもしれません。

Asp.net FileUploader コントロールがあります。ファイルをアップロードしたい Asp.net アプリケーションと同じマシンにフォルダがあります。

FileUploader にファイルを入れるように指示できるようにしたい

\\thisMachineName\UploadFolder\

しかし、そのパスへのアクセスが拒否されたことを示す例外が常に発生します。

ディレクトリを次のように変更すると

c:\UploadFolder\

それは正常に動作します。また、上記の UNC を Windows エクスプローラーに入れると、実際にディレクトリにマップされます。

アイデアや考えはありますか?

-- 更新 注: これは Windows 2000 サーバー ボックスであり、フォルダには「すべてのユーザー」に可能なすべての許可権限が付与されています。

4

3 に答える 3

3

私がよく目にすることの 1 つは、共有にアクセス許可を設定していないことです。共有フォルダーを設定するには、次の手順を実行する必要があります。

1) 共有に接続するアカウントを決定します
2) このアカウントにファイル システムへのアクセス権を付与します
3)このアカウントにネットワーク ファイル共有へのアクセス権を付与します

この場合の No. 1 は、通常、構成を確認するか、単純にプロセス エクスプローラーを使用して、ASP.NET が実行されているアカウントを特定することを意味します。これを行う方法については、Google にたくさんの情報があります。

2番は明らかです。物理ドライブが存在するマシンにログオンし、エクスプローラーでフォルダーを参照して右クリックし、セキュリティ タブをクリックします。私たちはこれを何十億回も繰り返してきました。

No. 3 は人が混乱する場所です。はい、worker アカウントにはローカル ファイル システムへのアクセス権がありますが、ネットワーク経由でローカル ファイル システムに接続する権限はありません。[セキュリティ] タブから [ネットワーク共有] タブに戻り、[アクセス許可] ボタンを探します。これを使用して、ワーカー アカウントに共有に接続する権限を付与します。

私が目にした 2 番目の問題は、マシン A のアクセス権を、マシン B にのみ存在するアカウントに付与しようとする場合です。通常、これは機能しません。マシン A とマシン B の両方が、ユーザーを認証するために A と B の両方が信頼する共通のドメインに属している必要があります。ほとんどの場合、Windows を実行している企業は ActiveDomain を使用してネットワーク上のアクセス権を制御しています。

マシン B の ASP.NET ワーカー プロセスがマシン A の共有にアクセスできるようにするには、ローカル マシンだけでなく、ネットワーク上で認証されたアカウントでワーカー プロセスを実行する必要があります。ほとんどの場合、ネットワーク上に特定のアカウントを作成し、そのアカウントに両方のマシンに権限を与えてから、そのアカウントを使用して Web サイトの ASP.NET ワーカー プロセスを実行する必要があります。

頭を悩ませているなら、学ぶべきことがいくつかあります。これは簡単なことではありません。以下を読むことを強くお勧めします。

http://msdn.microsoft.com/en-us/library/ms978378.aspx

比較的明確で、知る必要のあるすべてが含まれています。

于 2009-02-27T17:11:05.980 に答える
1

そのディレクトリにファイルを置くことはできますが、ASP.NET プロセスを実行しているユーザーはどうでしょうか。Windows Server 2003 (およびおそらく 2008 ですが、確かではありません) では、ASP.NET は NETWORK SERVICE アカウントで実行されます。このアカウントには、特にネットワーク上での権限がほとんどありません。ASP.NET アプリで偽装を使用するか、Everyone アクセスで共有をセットアップする必要があります。このタイプのシナリオでは、通常、全員がアクセスできるように共有をセットアップし、ファイアウォールで保護して、Web サーバーのみがアクセスできるようにします。

于 2009-02-27T16:45:58.350 に答える