我有一个在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">

Asp.net相关问答推荐

如何将标头中的用户名/密码传递给 SOAP WCF 服务

ASP.NET web api 无法获取 application/x-www-form-urlencoded HTTP POST

用于 ASP.NET 的 System.Drawing 的替代品?

在视图 Mvc.net 中访问路由值

在 cookie 中存储多个值

在属性中实现逻辑是一种好习惯吗

将复选框的值传递给 asp.net mvc4 中的控制器操作

Devexpress 或 Telerik Controls 比较

GridView 与嵌套类的属性绑定

在 Asp.net mvc5 中使用用户名而不是邮箱作为身份

在不知道键名的情况下访问 JSON 对象的元素

将通用列表绑定到转发器 - ASP.NET

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

如何获取当前登录用户的角色列表

如何在 ASP.NET 中通过 LAN 访问您的网站

简单的 LINQ 和列表错误:WhereListIterator`1[Task]' to type 'System.Collections.Generic.List`1[Task]'

System.Threading.Tasks - 限制并发任务的数量

IronRuby死了吗?

可以在不 destruct 站点的情况下将 MIME 类型添加到 web.config 吗?

ASP.NET 自定义控件 - 未知的服务器标记