[FIX] 偽装が有効な ASP.NET からインデックス サービスにアクセスしようとすると "アクセスが拒否されました" エラー メッセージが表示される

文書翻訳 文書翻訳
文書番号: 323293 - 対象製品
すべて展開する | すべて折りたたむ

目次

現象

ASP.NET ページを通して Index Server に対して検索した場合、次のエラー メッセージが表示されることがあります。
アクセスが拒否されました。説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

Exception Details: System.Data.OleDb.OleDbException: Access is denied.
この現象は、ASP.NET Web アプリケーションの偽装が有効で、かつ ASP.NET ワーカー プロセス (Aspnet_wp.exe) を実行しているセキュリティ コンテキストが ASPNET アカウントである場合にのみ発生します。

解決方法

次のいずれかの方法を実行して、この問題を回避します。
  • すべての ASP.NET Web アプリケーションの偽装を無効にします。これはデフォルトの設定です。
  • Index Server 検索を実行する特定の .aspx ページのみの偽装を無効にします。そのためには、次のように Web.config ファイルに <location> タグを追加します。
    <location path="filename.aspx">
    <system.web>
       <identity impersonate="false" />
    </system.web>
    </location>
    
これらの回避策を受け入れられない場合は、ASP.NET ワーカー プロセスを実行するセキュリティ コンテキストを、SYSTEM アカウントに変更することができます。ただし、SYSTEM アカウントは Web サーバー コンピュータ上で高い権限を持つ Administrator アカウントとなるため、ASP.NET ワーカー プロセスのセキュリティ コンテキストを SYSTEM アカウントに変更することは推奨されません。この回避策は、他の回避策がどれも受け入れられない場合にのみ使用してください。

ASP.NET ワーカー プロセスを実行するセキュリティ コンテキストを変更するには、Machine.config ファイルの <processModel> セクションにある userName 属性に SYSTEM を設定し、次に Password 属性に autogenerate を設定します。Machine.config ファイルは、C:\Windows ディレクトリ\Microsoft.Net\Framework\v1.0.3705\Config フォルダにあります。

状況

マイクロソフトでは、この問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。

この問題を解決するためのモジュールは、Windows 2000 日本語版 Service Pack 4 以降に含まれております。
Windows 2000 日本語版の最新 Service Pack については、以下の Web サイトから入手できます。
http://www.microsoft.com/japan/windows2000/downloads/servicepacks/sp4/default.asp

詳細

問題の再現手順

  1. Microsoft Visual Studio .NET を起動します。
  2. ASP.NET Web アプリケーションを作成します。
  3. .aspx ページの HTML に次のコードを追加します。
    <%@ Page language="c#" %>
    <%
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("provider=msidxs;");
    
                conn.Open();
    
                string Sql = "Select DocTitle, vpath, characterization, rank from Scope(' DEEP TRAVERSAL OF \"C:\\\" ')  where FREETEXT(' \"ticket\" ') order by rank desc";
    
                System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(Sql, conn);
    
                System.Data.DataSet ds = new System.Data.DataSet();
    
                da.Fill(ds, "SearchResults");
                Response.Write("Search Results: <br>");
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
    
                {
    
                            Response.Write("<br>" + ds.Tables[0].Rows[i]["vpath"].ToString());
    
                }
    
    %>
    
  4. 次のように、Web.config ファイルを修正して偽装を有効にします。
    <identity impersonate="true" />
    
  5. ASP.NET ワーカー プロセスを実行しているセキュリティ コンテキストを ASPNET アカウントにします。そのためには、Machine.config ファイルの <processModel> セクションにある userName 属性に machine を設定し、次に Password 属性に autogenerate を設定します。

    : デフォルトでは、ASP.NET ワーカー プロセスは、制限された ASPNET アカウントのセキュリティ コンテキストで動作するよう設定されています。
  6. コンピュータでインデックス サービスを起動します。
  7. アプリケーションをビルドし、ブラウザで .aspx ページを開きます。「現象」に記載されたエラー メッセージが表示されることを確認します。

関連情報

ASP.NET における偽装の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
306158 INFO: Implementing Impersonation in an ASP.NET Application
306158 [INFO] ASP.NET アプリケーションに偽装を実装する
ASP.NET ワーカー プロセス ID の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
317012 INFO: Process and Request Identity in ASP.NET
317012 [INFO] ASP.NET のプロセス ID と要求 ID

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 323293 (最終更新日 2003-03-26) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 323293 - 最終更新日: 2006年3月24日 - リビジョン: 2.5
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 1.0
  • Microsoft Index Server 2.0
  • Microsoft OLE DB Provider for Index Server 3.0
キーワード:?
kbhotfixserver kbfix kbbug kbconfig kbnofix kbsecurity KB323293
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com