httpErrors の errorMode の委任

公開日: 2008 年 3 月 19 日 (作業者: walterov (英語))

更新日: 2009 年 2 月 11 日 (作業者: walterov (英語))

警告: 予想されていたように、現時点でこの機能は IIS 7 ではサポートされていません。次のリリースに向けて、開発中です。IIS 7 では、特定のサイトまたはサーバー全体に対して HTTP エラーのロック/ロック解除が可能ですが、現時点では、"lockAllAttributesExcept="errorMode" は httpErrors では使用できません。この記事に記載されている、特定の属性のロックを解除する方法は、IIS 7 の他の構成セクションで利用できます。

ホスティングでは、'applicationhost.config' ファイルのセクション全体ではなく、特定の設定 (httpErrors セクションの errorMode 設定や ASP セクションの scriptErrorSentToBrowser 設定など) のみユーザーに委任したい場合があります。トラブルシューティングのため、エラーの詳細をリモート クライアントで表示できるようにして欲しいとユーザーが要望することもあるでしょう。これを実現するには、ホスティング事業者は errorMode を除くすべての属性をロックし、(lockAllAttributesExcept="errorMode")、さらにエラー要素をロックする必要があります (lockElements="error")。これによって、ユーザーは errorMode を "detailedLocalOnly" から "Detailed" へ変更できるようになり、発生したすべてのエラーの詳細情報を確認できます。

errorMode 設定を委任する

  1. overrideModeDefault を使用して applicationhost.config の <httpErrors> セクションを委任します。 "%windir%\system32\inetsrv\config\applicationhost.config" をテキスト エディターで開き、<section name="httpErrors" overrideModeDefault="Deny" /> 要素を以下のように変更します。

    <section name="httpErrors" overrideModeDefault="Allow" /> 
    
  2. lockAllAttributesExcept および lockElements を使用して、errorMode 設定のみ委任を許可します。<httpErrors> 要素を以下のように変更します。

    <httpErrors lockAllAttributesExcept="errorMode" lockElements="error" >  
    

       変更後の httpErrors セクションは以下のとおりです。

    <httpErrors lockAllAttributesExcept="errorMode" lockElements="error"> 
      <error statusCode="401" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="401.htm" />
      <error statusCode="403" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="403.htm" />
      <error statusCode="404" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="404.htm" />
      <error statusCode="405" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="405.htm" />
      <error statusCode="406" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="406.htm" />
      <error statusCode="412" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="412.htm" />
      <error statusCode="500" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="500.htm" />
      <error statusCode="501" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="501.htm" />
      <error statusCode="502" prefixLanguageFilePath="%SystemDrive%\inetpub\custerr" path="502.htm" />
    </httpErrors>
    
  3. 次に、ホスト管理者は appcmd を使用して、errorMode を "Detailed" または "Custom" に設定します (以下の例を参照)。

    %windir%\system32\inetsrv\appcmd set config "Default Web Site" -section:httpErrors -errorMode:Detailed 
    

       または、ユーザーの web.config ファイルに以下のステートメントを追加するよう要請してください。

    <system.webServer>
       <httpErrors errorMode="Detailed"/>
    </system.webServer>
    

リソース

詳細については、次の資料を参照してください。