如何配置 ELMAH 以与 Windows Azure 一起使用?我在 Elmah.axd 上收到 404
-
06-09-2019 - |
题
我有一个在 Windows Azure 上运行的 ASP.NET MVC Web 角色,并在 web.config 中正确设置了 ELMAH。我也有我的 global.asax 忽略 *.axd 路线。在本地,我可以加载 /elmah.axd,但是当我部署到 Azure 时,我在该页面上收到 404 错误。有人让 ELMAH 在 Azure 上工作吗?
解决方案
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>
有在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 这里)您可能需要将远程访问设置为 1:
<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
不隶属于 StackOverflow