2

tl; dr:重要なビットは太字で示されています。

実行されると、一連のファイルを読み取り、それらを圧縮してユーザーに返すことになっているWebサイトページがあります。

残念ながら、エラーが発生しています。

ASP.NETは、要求されたリソースへのアクセスを許可されていません。リソースへのアクセス権をASP.NET要求IDに付与することを検討してください。ASP.NETには、アプリケーションが偽装していない場合に使用される基本プロセスID(通常、IIS5の{MACHINE}\ AS​​PNETまたはIIS6のネットワークサービス)があります。アプリケーションがを介して偽装している場合、IDは匿名ユーザー(通常はIUSR_MACHINENAME)または認証された要求ユーザーになります。

現在、ファイルにアクセスしようとしている私の行は次のようになっています。

using (FileStream x = File.Open(@"\\thedirectory\filename.pdf", FileMode.Open, FileAccess.Read)) { }

(この行は、ファイルを開こうとする以外に何の役にも立ちません。今は、アクセスできるかどうかを確認しようとしているだけだからです。)

このコードは機能し、ファイルを自分のマシンのディレクトリにコピーしてそこにパスを移動させれば、問題なくファイルを開くことができます。しかし、元のファイルがあるリモートマシンに行くと、サイコロはありません。

ASP.NETプロセスが誰として実行されていても、そのプロセスがディレクトリへのアクセス許可を持っていることを確認するために、しばらくの間、うさぎの穴を掘り下げました。しかし、それが機能せず、必死になっていたので、テストとして「全員」にリモートディレクトリへのすべてのアクセス権を与えました。それでも同じエラーが発生します。

I'm guessing this is a permissions issue (since that's what it's claiming) combined with the fact that the code works when pointing at a local file. However, since I've already given "everyone" all permissions, I'm lost as to what could be going wrong.

Ideas?

4

1 に答える 1

2

I'm guessing that the other files are on a different machine, here is one possiblity: https://serverfault.com/questions/41130/network-service-account-accessing-a-folder-share

Another possiblity is to impersonate a domain account that has access to the target folder- http://support.microsoft.com/kb/306158

Or change the service account to a domain account that has access to the target folder.

于 2012-12-10T22:48:34.620 に答える