如何配置ELMAH以使用Windows Azure?我在Elmah.axd上获得了404

Rob*_*olk 37 asp.net asp.net-mvc elmah azure

我在Windows Azure上运行了一个ASP.NET MVC Web角色,并在web.config中正确设置了ELMAH.我也有我的global.asax忽略*.axd路由.在本地,我可以加载/elmah.axd,但是当我部署到Azure时,我在该页面上获得了404.有没有人让ELMAH在Azure上工作?

Mat*_*les 27

Azure基于Windows Server 2008和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>
Run Code Online (Sandbox Code Playgroud)

上面的xml块中有2条elmah行,你需要包含这些行,而且一般来说,该部分应该包含大部分(如果不是全部)这些元素.

编辑:不再需要,因为默认情况下现在开启:

要让Elmah工作,您还需要修改ServiceDefinition.csdef文件中的以下行:

<WebRole name="WebRole" enableNativeCodeExecution="true">
Run Code Online (Sandbox Code Playgroud)


Kev*_*nUK 11

同时保护文件,以便只允许用户查看错误日志!

<location path="admin/elmah.axd">
    <system.web>
        <authorization>
            <allow roles="Administrator" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

  • 有一个web.config <appSettings>选项:<add key ="elmah.mvc.allowedRoles"value ="Administrator"/>应该处理这个问题. (2认同)

The*_*iot 9

我想另外(对于@ mat1t在这里建议的)你可能需要设置远程访问1:

<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
Run Code Online (Sandbox Code Playgroud)