如何configurationELMAH以使用Windows Azure? 我在Elmah.axd上得到了一个404

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

Azure基于Windows Server 2008和IIS7。 这意味着您需要填充web.config文件的system.webServer部分。

包含在elmah源代码中的示例文件包含您需要input的详细信息。

<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"> 

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

 <location path="admin/elmah.axd"> <system.web> <authorization> <allow roles="Administrator" /> <deny users="*" /> </authorization> </system.web> </location> 

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

 <elmah> <security allowRemoteAccess="0" /> .............. .............. </elmah>