我的ASP.NET MVC应用程序位于IIS 6.0 webroot文件夹中名为Stuff的文件夹中。所以我以http://localhost/Stuff/Posts的身份访问我的网页。当我使用Visual Studio的内置Web服务器时,我有EMLAH工作。现在当我访问http://localhost/Stuff/elmah.axd时,我发现资源未找到错误。谁能在这里指出我的错误!这是配置文件条目,
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> //Handler
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/> //Module
答案 0 :(得分:15)
使用IIS7我发现我需要填充web.config
的两个部分(system.web
和system.webServer
) - 请参阅Elmah not working with asp.net site。
也许这是相关的。
答案 1 :(得分:5)
您是否在global.asax中添加了忽略* .axd路由?
答案 2 :(得分:2)
对于Elmah,我们需要区分两件事: 首先,http模块执行错误记录,电子邮件等所有工作。 二,http处理程序,显示错误日志页面和其他页面(rss等)
我遇到了404资源未找到的相同问题,因为我有一个奇怪的设置! 在我的开发机器上,(Windows 7,iis 7)elmah工作就像一个魅力,因为应用程序池在集成管道模式下工作。然而,在生产机器中,应用程序正在使用托管管道,我尽我所能使elmah工作,但这一切都没用......
然后我开始使用常规的aspx页面显示UI(错误日志页面,rss,错误详细信息......)。 我下载了源代码,做了一些更改(对不起Atif,我被迫这样做是因为我需要最快的解决方案)然后在我的应用程序中,我创建了一个文件夹,在该文件夹下我创建了继承自Elmah定义页面的常规aspx页面。 该页面只包含一行(例如:详细信息页面:&lt;%@ Page Language =“C#”Inherits =“Elmah.ErrorDetailPage”%&gt;)
现在,我能够运行Elmah,无论IIS 6/7如何,它都像魅力一样......它让我免于正确配置http处理程序和排除其工作的麻烦!另外,配置安全性要简单得多!
我不知道社区是否对此解决方案感兴趣(如果是,我准备发布我的完整更改)。
希望这能让您了解如何以另一种方式解决问题(如果您需要修改后的dll以及如何使用它的完整说明,请告诉我!)
答案 3 :(得分:1)
如果您不想更改代码或Managed Pipelin Mode
文件,请在IIS中的应用程序池设置中将Classic
设置为web.config
。您的axd.s
将像以前一样工作。
答案 4 :(得分:0)
你可以发布你的web.config的其余内容吗?
或者,如果你足够舒服,你能否确保在web.config中正确填写httpHandlers和httpModules(非处理程序和模块)部分?