37

WindowsAzureでASP.NETMVCWebロールを実行していて、web.configでELMAHを適切にセットアップしています。また、global.asaxに*.axdルートを無視させます。ローカルでは、/ elmah.axdを読み込むことができますが、Azureにデプロイすると、そのページに404が表示されます。ELMAHでAzureに取り組んでいる人はいますか?

4

3 に答える 3

27

Azureは、WindowsServer2008およびIIS7に基づいています。これは、web.configファイルのsystem.webServer部分にデータを入力する必要があることを意味します。

elmahのソースコードに含まれているサンプルファイルには、入力する必要のある詳細が含まれています。

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
    <remove name="ScriptModule" />
    <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
  </modules>
  <handlers>
    <remove name="WebServiceHandlerFactory-Integrated"/>
    <remove name="ScriptHandlerFactory" />
    <remove name="ScriptHandlerFactoryAppServices" />
    <remove name="ScriptResource" />
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
         type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
         type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add name="elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
  </handlers>
</system.webServer>

上記のxmlブロックには2つのelmah行があり、これらを含める必要があります。一般に、セクションには、これらの要素のすべてではないにしてもほとんどが含まれている必要があります。

編集:これはデフォルトでオンになっているため、不要になりました:

Elmahを機能させるには、ServiceDefinition.csdefファイルの次の行も変更する必要があります。

<WebRole name="WebRole" enableNativeCodeExecution="true">

于 2009-06-10T20:25:58.600 に答える
11

また、許可されたユーザーのみがエラーログを表示できるように、ファイルを保護してください。

<location path="admin/elmah.axd">
    <system.web>
        <authorization>
            <allow roles="Administrator" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>
于 2009-07-06T20:25:49.080 に答える
9

さらに(ここで@ mat1tによって提案されたものに加えて)、リモートアクセスを1に設定する必要があるかもしれません。

<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
于 2009-06-15T07:14:21.750 に答える