我有一个在Windows Azure上运行的ASP.NET MVC Web角色,并且已在web.config中正确设置了ELMAH.我还让我的global.asax忽略*.axd路由.在本地,我可以加载/elmah.axd,但是当我部署到Azure时,该页面上会显示404.有没有人让Elmah在Azure上工作?
我有一个在Windows Azure上运行的ASP.NET MVC Web角色,并且已在web.config中正确设置了ELMAH.我还让我的global.asax忽略*.axd路由.在本地,我可以加载/elmah.axd,但是当我部署到Azure时,该页面上会显示404.有没有人让Elmah在Azure上工作?
Azure基于Windows Server 2008和IIS7.这意味着您需要填充系统.web服务器是web的一部分.配置文件.
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>
上面的挡路中有2行elmah代码需要包括在内,该部分通常应该包含大部分(如果不是全部的话)这些元素.
编辑:不再需要,因为现在默认情况下此选项处于启用状态:
For Elmah to work you will also need to modify the following line in your ServiceDefinition.csdef file:
<WebRole name="WebRole" enableNativeCodeExecution="true">