System.Security.SecurityException 仮想ディレクトリが仮想ディレクトリ内のリモート共有をポイント ASP.NET

この記事は、リモート共有をポイントする仮想ディレクトリを使用して、リモート ベースのアプリケーションをホストするときにスローされる可能性のあるMicrosoft ASP.NET System.Security.SecurityException 解決するのに役立ちます。

元の製品バージョン:  ASP.NET
元の KB 番号:   320268

現象

リモート共有をポイントする仮想ディレクトリを使用して ASP.NET ベースのアプリケーションをホストすると、次のいずれかの例のようなエラー メッセージが表示されることがあります。

  • メッセージ 1

    セキュリティ例外の説明: アプリケーションは、セキュリティ ポリシーで許可されていない操作を実行しようとした。 このアプリケーションに必要なアクセス許可を付与するには、システム管理者に連絡するか、構成ファイルでアプリケーションの信頼レベルを変更してください。
    例外の詳細: System.Security.SecurityException: セキュリティ エラー。
    ソース エラー:
    行 30: プライベート静的 bool __intialized = false;行 31: 行 32: パブリック Global_asax() { 行 33: if (ASP.Global_asax.__intialized == false)) { 行 34: ASP。Global_asax.__intialized = true;

  • メッセージ 2

    /ApplicationName アプリケーションのサーバー エラー。
    パーサー エラーの説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。 次の解析エラーの詳細を確認し、ソース ファイルを適切に変更してください。
    パーサー エラー メッセージ: ApplicationName.Global 型を読み込めそうにな
    ソース エラー: 行 1: <%@ Application Codebehind="Global.asax.cs" Inherits="ApplicationName.Global" %> ソース ファイル: Application\global.asax 行のパス: 1

原因

名前空間 System.Web には適用 AllowPartiallyTrustedCallersAttribute されません。 詳細については、パターンとプラクティス &参照してください

この属性を持My_Computer_Zoneコード グループに含まれるコードには 、FullTrust ユーザー権限が必要です。 そのため、Web アプリケーションのコンテンツを保持するリモート共有には FullTrust が必要です

解決方法

この動作を解決するには 、FullTrust 権限を リモート共有に付与します。

  1. Web サーバーで [管理ツール] を開き、[Microsoft の構成] .NET Framework ダブルクリックします

  2. [ ランタイム セキュリティ ポリシー] を展開し、[ コンピューター] を展開 し、[コード グループ] を展開します

  3. [新しいファイル] をAll_Code し、[新規] を 選択します

  4. [ 新しいコード グループを作成する] を選択します。 コード グループに、アプリケーション共有の名前などの関連する名前を指定します。 [次へ] を選択します。

  5. [この コード グループの条件の種類を選択する] ボックスの一覧で**、[URL] を選択します**。

  6. [URL] ボックス に、共有のパスを次の形式で入力します。
    file:////\\computername\\sharename\*

    注意

    computername を リモート共有をホストしているコンピューターの名前に置き換える。 sharename を 共有の名前に置き換える。

  7. [次へ] を選択します。 次のページで、[既存の アクセス許可セットを使用する] を選択、[FullTrust] を選択します

  8. [次 へ] を 選択し、[完了] を 選択します

  9. [インターネット インフォメーション サービス (IIS) を再起動して、ワーカー プロセス ASP.NET 再起動します。

[Microsoft .NET Framework 構成] が [管理ツール] の下に表示されない場合は、.NET Framework ソフトウェア開発キット (SDK) をインストールして Microsoft .NET Framework 構成を追加できます。 代わりに、次のコマンドを実行して変更を行います。

Drive :\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\computername\sharename\*" FullTrust -exclusive on

これらの引数の処理の詳細については、次のコマンドを実行します。

caspol.exe -?

状態

この動作は仕様です。

詳細

この構成では、ワーカー プロセスが実行されるアカウント ASP.NET 共有に対する十分な権限が必要です。 ワーカー プロセスを実行するアカウントを設定するには、このファイルのタグ <processmodel> を使用Machine.configします。

動作を再現する手順

  1. リモート共有をポイントする新しい仮想ディレクトリを作成します。
  2. 仮想ディレクトリのアプリケーションを作成します。 共有に接続するユーザーがリモート コンテンツへの読み取りアクセス権を持っている必要があります。
  3. Machine.configファイルのタグで、リモート共有に対するリスト、読み取り、および実行のアクセス許可を持つドメイン ユーザー <processmodel> にユーザーを変更します。
  4. インラインの .aspx ファイルを作成し、そのファイルをリモート共有に置く。
  5. ページの要求を行います。

関連情報

ASPNET アカウントでアプリケーションを実行するために必要なアクセス許可の詳細については、「ASP.NET Id の概要」を ASP.NET してください。 セキュリティの詳細については、「INFO: ASP.NETの概要」ASP.NET を参照してください