Elmah不使用asp.net站点
我曾尝试在我的asp.net站点中使用elmah,但每当我尝试转到“获取资源未发现异常”。下面给出了我的web.configElmah不使用asp.net站点,asp.net,exception-handling,elmah,Asp.net,Exception Handling,Elmah,我曾尝试在我的asp.net站点中使用elmah,但每当我尝试转到“获取资源未发现异常”。下面给出了我的web.config <?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="elmah"> <section name="security" requirePermission="f
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="security" requirePermission="false"
type="Elmah.SecuritySectionHandler, Elmah"/>
<section name="errorLog" requirePermission="false"
type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false"
type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false"
type="Elmah.ErrorFilterSectionHandler, Elmah"/>
</sectionGroup>
</configSections>
<elmah>
<security allowRemoteAccess="0" />
<errorLog type="Elmah.SqlErrorLog, Elmah"
connectionStringName="elmah-sql" />
<errorMail
from="my@account"
to="myself"
subject="ERROR From Elmah:"
async="true"
smtpPort="587"
smtpServer="smtp.gmail.com"
userName="my@account"
password="mypassword" />
</elmah>
<connectionStrings>
<add name="elmah-sql" connectionString="data source=(sqlserver);
database=elmahdb;
integrated security=false;User ID=user;Password=password"/>
</connectionStrings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="Elmah, Version=1.0.10617.0, Culture=neutral,
PublicKeyToken=null"/>
</assemblies>
</compilation>
<authentication mode="Windows"/>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<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="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, 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"
preCondition="integratedMode"
type="Elmah.ErrorLogPageFactory, Elmah"/>
</handlers>
</system.webServer>
</configuration>
尝试在
部分的“httphandlers”和“httpmodules”部分注册模块和处理程序:
<httpHandlers>
......
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
.....
</httpHandlers>
<httpModules>
.......
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
.......
</httpModules>
......
.....
.......
.......
我刚刚遇到了一个类似的问题,Elmah没有在IIS7部署中工作。我发现我需要在system.web
和system.webServer
中注册Elmah模块和处理程序:
<system.web>
...
<httpHandlers>
...
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
...
</httpHandlers>
<httpModules>
...
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
...
</httpModules>
...
</system.web>
<system.webServer>
...
<modules runAllManagedModulesForAllRequests="true">
...
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
...
</modules>
<handlers>
...
<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
...
</handlers>
<system.webServer>
...
...
...
...
...
...
...
...
...
...
...
您可能也需要这个
当你得到
403-禁止:访问被拒绝。
您没有权限使用查看此目录或页面
您提供的凭据
今天解决这个问题的一个方法是使用nuget
Visual studio:菜单->工具->库包管理器->包管理器控制台
install-package elmah
HTHnuget包未将以下重要行添加到web.config,导致403错误
<configuration>
<elmah>
<security allowRemoteAccess="1" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/app_data/elmah" />
</elmah>
</configuration>
此外,您可能希望通过以下方式限制对错误日志的访问:
<add name="Elmah" verb="POST,GET,HEAD" path="/admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
当我使用NuGet(VS 2013,IIS 8.0)安装时,这行代码缺失:
添加它解决了404错误问题。如果您使用的是Areas,请确保您已更新其中一个appsetting键
违约
<add key="elmah.mvc.route" value="elmah" />
如果你是一名区域管理员
<add key="elmah.mvc.route" value="admin/elmah" />
Aman:你假设每个人都知道什么是ELMAH。我编辑了这个问题以提供链接。如果不是这样,请更正它。我想您可能必须在IIS级别注册处理程序/模块,我想它才能工作。看看这是否有帮助-谢谢@shahkalpesh。我真的被工作压得喘不过气来!虽然我认为这个问题可能对其他人也有帮助,并使其成为社区维基。奇怪的是,我尝试了这些建议,但没有成功!最糟糕的是,当我试图访问elmah.axd
时,IIS挂起了。Yippe正常工作!!!我也想到要把它放在那里,但我没有在任何在线博客解决方案中看到它,所以我有点不好意思这么做。出于某种原因,这让ELMAH在另一台服务器上为我工作。这很奇怪,因为它应该与我们的相同,但我们只有system.webserver声明。谢谢,这真的帮助了我。令人惊讶的是,这个答案为我节省了大量时间。对于那些从system.web剪切和粘贴到system.webserver的人,请确保在处理程序部分添加name属性。谢谢,这对我有用。但这是一个错误吗<代码>
应该是针对IIS6的,而
是针对IIS7+的。这是在验证eyesnz的帖子后为我做的。是的,但别忘了通过身份验证保护该页面。否则任何人都可以看你的日志。404是“未找到”,但大多数情况下,当您将404修复为标记答案时,您通常会得到403。您需要在sectiongroup name=“elmah”下添加此标记。您需要在标记后添加此标记,这确实让开发人员的生活更轻松。在我的网站上做得很好。配置这对我来说也绝对有效。谢谢Peter。这是对我的修复,我也在vs 2013,iis8.0上,使用nuget安装。在使用nuget安装ELMAH后,这在vs 2015的本地主机调试中为我修复了它。我也有这个。我提出了一个问题,这个项目也为我工作
<add key="elmah.mvc.route" value="elmah" />
<add key="elmah.mvc.route" value="admin/elmah" />