仮想ディレクトリからUNCパスへのアクセス許可の問題


13

サイトに仮想ディレクトリがあります(テスト環境)。パブリックFTPとしても使用されるUNC共有です。

ドメイン管理者アカウントとして接続するように構成されており、「テスト設定」ではすべてが機能しているように見えると書かれています。しかし、私がそれに接続しようとすると、私は得る:

500-「アクセスが拒否されたため、\ INTRANET \ FTP \ test \ web.configの変更の監視を開始できませんでした」

これはASP.NET YSODです。ASP.NETが私が要求している静的な.jpgファイルであるため、ASP.NETが関与している理由はわかりません。

失敗した要求トレースをオンにしようとしましたが、これは特定のエラーです。

  • ModuleName WindowsAuthentication
  • 通知2
  • HttpStatus 500
  • HttpReason内部サーバーエラー
  • HttpSubStatus 0
  • エラーコード0
  • ConfigExceptionInfo
  • 通知AUTHENTICATE_REQUEST
  • ErrorCode操作は正常に完了しました。(0x0)

「物理パスログオンタイプ」をClearTextからNetworkに変更した場合。次のIISエラーが表示されます。

HTTPエラー500.19-内部サーバー

エラーページの関連する構成データが無効であるため、要求されたページにアクセスできません。

詳細なエラー情報

  • モジュール IIS Webコア
  • 通知 BeginRequest
  • ハンドラーはまだ決定されていません
  • エラーコード 0x80070005
  • 構成エラー権限が不十分なため、構成ファイルを読み取れません
  • 構成ファイル \\?\UNC\INTRANET\FTP\test\web.config
  • 要求されたURL http://test.mydowmain.com:80/uploads/images/ca49acf6-6174-412e-8abd-59fab983e931.jpg

  • 物理的経路 \\INTRANET\FTP\test\images\ca49acf6-6174-412e-8abd-59fab983e931.jpg

  • ログオン方法はまだ決定されていません

  • ログオンユーザーはまだ決定されていません
  • 失敗した要求トレースログディレクトリ C:\inetpub\logs\FailedReqLogFiles

これは失敗したリクエストログを奇妙なほど生成しません—エラーコード400-999でエラーをトレースするように失敗したリクエストトレースを設定しました。

また、IIS内から構成機能を開くと、アクセス拒否エラーが表示されます。

私のローカル開発マシンでは、同じUNCパスと同じユーザーにまったく同じセットアップを使用しています。テストサーバー上では実行されません。

私は何を間違えていますか?

回答:


10

ASP.netアプリであるという事実は、おそらくまさにここにある問題です。アプリケーションプールIDには権限が必要です(必ずしもIIS IDではありません。既定では、アプリプールIDはローカルネットワークサービスアカウントです)。おそらく、IISコンピューターでcaspol.exeを実行する必要があります。

http://msdn.microsoft.com/en-us/library/cb6t8dtz%28v=vs.80%29.aspx

http://learn.iis.net/page.aspx/50/aspnet-20-35-shared-hosting-configuration/

%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1.  -url "file://\\remotefileserver\content$\*" FullTrust

7

Webサーバーとuncサーバーの両方で一致するアカウントを作成することで問題を解決しました。次に、ネットワークサービスではなく、一致するアカウントを使用して実行するようにアプリケーションプールを変更しました。これにより、他のネットワークサービスに依存する機能に影響を与えることなく、両方のサーバーでパスワードを同期する柔軟性が得られました。


3
5時間を費やしてソリューションを探した後、ようやくIT Actionのソリューションが機能しました。そのため、両方のマシンでまったく同じユーザーを作成し、そのアカウントを使用して実行するようにアプリケーションプールを設定しました。私はちょうどそれに夢中になりました。最終的に解決しました。これは誰にでもお役に立てば幸いですが、同じ問題がある

大規模な+1。私は@ user249232と同じボートに乗っています-IISマシンでミラーアカウントを作成すると、多くの検索を行った後すぐに問題が解決しました。ただし、アプリプールIDを変更するのではなく、サイトの基本設定で[接続]でユーザーを設定します。
だらしない

1
このソリューションの対象となる名誉ですが、これは私にとってはひどいソリューションです。私は、自分のvbox linuxセットアップで社内ドメインのユーザー名セットアップを模倣したくないので、別のユーザー名規則を使用します。パスワードの同期はさらに複雑で、私にとっては非常に複雑です。なぜなら、私はすでに分割サーバーを使用しているからです(ホスト上でii、コンポーザーにアクセスするためにLinux上でphp56)
Brian Thomas

2日間過ごした後。これは私のために働いた。私も同じ資格情報を試しましたが、機能しませんでした。最後に、管理者グループのその一般ユーザーを移動した後に機能します
ケタンコタック

2

この共有ソースがアプリケーション(eqフォルダーなど)でない場合、仮想ディレクトリを含むルートアプリケーションによって無視されるように仮想ディレクトリを構成してみてください(私の場合は、ルートアプリプールタイプを次のように変更してこれを完了しました)統合モードではなくクラシック)。ただし、共有ポイントにアプリケーションがある場合は、@ mfinniが述べた方法に従うことができます。


1

IISが実行されているアカウントに、面倒なUNCに対する適切な権限または必要な権限があることを確認してください。


3
これがASP.netアプリでなければ、お金を稼げます。アプリケーションプールで実行されているため、アクセスを必要とするのはアプリケーションプールIDであり、IISユーザーアカウントではありません。
mfinni

1

IIS 7.5でも同じ問題が発生しましたが、解決策は次のとおりです。

  1. 共有を使用してサーバーにローカルユーザーを作成する
  2. ネットワーク共有を作成し、手順1で作成したユーザーに目的のアクセス許可を付与します。Windowsは、指定したユーザーのアクセス許可を設定します
  3. IISの仮想ディレクトリに移動し、「詳細設定」を開きます
  4. ネットワーク共有の物理パスにURLを入力します \\<servername>\<sharename>
  5. 物理パスの資格情報をクリックします。手順1で作成したユーザーの資格情報を追加します

0

ドメインアカウントを使用して一部のドメインリソースにアクセスする非ドメインWebサーバーで同じ問題が発生しました。奇妙な動作が発生していました(資格情報が正しいことを知っていても「テスト資格情報」は失敗し、コンテンツビューでフォルダーとファイルを表示できましたが、それらを「参照」できませんでした)。解決策は、ドメインユーザーと同じ名前でマシン上にローカルユーザーを作成することでした。

これは、Webサーバーがドメインのメンバーであり、仮想ユーザーをマップするためにローカルユーザーがいくつかのローカルリソース(config?)にアクセスする必要があった場合に起こることだと考えています。

それが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.