我过去使用过一个使用hMailServer的ELMAH,但不幸的是,我正在开发一个我没有专用邮件服务器的项目,所以我只是从我设置的gmail帐户发送测试电子邮件.
另外,我将把ELMAH错误记录添加到应用程序中.我想知道ELMAH是否支持使用GMAIL作为发送电子邮件的方法?
编辑似乎有可能这将根据以下文章工作:
我用Elmah记录异常,并想知道我使用的技术是不是很好的设计?
现在我捕获并重新抛出各种类和方法中出现的异常,并将它们记录到程序的主try-catch块中的Elmah.
//主程序
try
{
// Some code that fires off other classes, etc...
MyTestClass myTestClass = new MyTestClass();
myTestClass.Execute();
}
catch(Exception ex)
{
ErrorSignal.FromCurrentContext().Raise(ex);
}
Run Code Online (Sandbox Code Playgroud)
// MyTestClass
public class MyTestClass
{
public object ApiResult { get; set; }
public string Execute()
{
try
{
// execute some code
// ....
// set xml message
ApiResult = "User information xml response";
}
catch (Exception ex)
{
// set xml message
ApiResult = "something went wrong xml error response...";
throw;
} …Run Code Online (Sandbox Code Playgroud) 我创建了一个Web应用程序并添加了一个用于错误记录的ELMAH模块.它正在使用我的本地开发环境:当我访问URL http:// localhost:52584/elmah.axd时,它显示了一个有效的页面:

当我在天蓝色门户网站上传后测试它时,它会显示一个错误页面:

我需要为Azure平台做什么特定配置吗?
此外,我已经在我的Web应用程序上进行了表单身份验证,因此当我尝试elmah.axd时,它将重定向到登录页面,我需要先登录.我想删除该表单身份验证,尤其是对于elmah.axd.我怎样才能实现这一目标?
我无法找到ElMah-错误记录工具的任何分步教程.基本上,我发现了一些文章,但它们都很模糊.例如,我发现这篇文章比其他任何文章都好一点:
http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx
但它有严重的问题,例如作者说你必须添加一些"HTTPHendlers和HttpModules":他的意思是什么?当他说某些HttpHandlers时他的意思是什么?有没有人知道任何可以指导基础知识的好教程?
任何人都可以建议为什么elmah错误页面没有出现,我得到一个错误404.我正在使用IISExpress.我确信我有这个工作,并且不记得对web.config进行任何更改以阻止它工作.
我的配置文件:
<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>
<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.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
</modules>
</system.webServer>
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
</configuration>
Run Code Online (Sandbox Code Playgroud) 我正在运行Visual Studio 2010,使用ASP.Net表单应用程序.我正在尝试在构建上转换XMl但它无法正常工作.
在我的配置部分,我有以下内容:
<elmah>
<security allowRemoteAccess="yes" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionString="Data Source=TestServer;Initial Catalog=OnlineApplication;Trusted_Connection=True" />
<errorMail from="emhelp@server.edu" to="person@test.com" subject=" Exception" async="true" smtpserver="smtpgate.server.edu" />
Run Code Online (Sandbox Code Playgroud)
当我通过web.config.production xml转换发布到生产时,我试图让它变成ELMAH服务器名称.我对应用程序设置和连接字符串的所有其他设置都可以正常工作.我在web.production.config中有以下内容:
<add type="Elmah.SqlErrorLog, Elmah"
connectionString="Server=ProductionServer;Initial Catalog=OnlineApplication;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(type)"/>
</elmah>
Run Code Online (Sandbox Code Playgroud)
它没有抱怨,但也没有改变文本.我需要更改什么才能在构建/发布时对文件进行转换.
我们有一个配置为使用 ELMAH 的 ASP.NET MVC 3 应用程序。我们的 Application_Error 方法中也有这样的代码。ELMAH 和我们的自定义代码都记录到数据库中。
protected void Application_Error(object sender, EventArgs e)
{
MvcApplication app = (MvcApplication)sender;
HttpContext httpContext = app.Context;
Exception ex = app.Server.GetLastError();
HttpException httpException = ex as HttpException;
//log the error with our custom logging
Server.ClearError();
if (httpContext.IsCustomErrorEnabled) //only show custom error if enabled in config
{
httpContext.Response.Clear();
httpContext.ClearError();
//show our own custom error page here
}
}
Run Code Online (Sandbox Code Playgroud)
我们看到的问题(不是真正的问题,但无论如何)是 ELMAH 和我们的自定义代码都将异常记录到数据库中。我希望对 Server.ClearError() 和 httpContext.ClearError 的调用会处理错误,并且它永远不会到达 ELMAH。但是,错误被记录两次的事实是否意味着 ELMAH 和 application_error 基本上并行运行并且它们都同时收到未处理的异常?如果是这样,无论如何要告诉 ELMAH 忽略该错误?
我们的目的是让 …
我已经设置了elmah来通过包含一个webapi事件的httpfilter来拾取webapi异常,如ELMAH和MVC4中的API控制器中所述,不记录错误。
它可以正常工作,我可以看到错误进入了elmah db,问题是errorMail模块没有尽管它可以正常执行操作,但似乎没有问题,但
我似乎没有能力将其删除,因此我已经删除了所有错误过滤器,这也不是为什么不发送电子邮件的原因。
我还尝试通过在global.asax中添加一个无效的ErrorMail_Filtering(object sender,ExceptionFilterEventArgs args)方法来为电子邮件设置特殊的过滤器,但是对于webapi异常,它甚至从未达到(对于非webapi异常,它可以正常工作)
其他人遇到了这个问题,知道如何解决吗?我讨厌不得不更换Elmah电子邮件过滤器...
我试图在不使用MVC的ASP.NET WEB API 2项目中实现Elmah错误日志记录.
我尝试了Elmah和Elmah.mvc nuget包,我甚至无法使用两者浏览到emlah页面.
ASP.NET WEB API 2中是否支持elmah?
PS.我甚至没有开始记录错误.我只是想浏览页面(elmah中的elmah.axd或elmah.mvc中的/ elmah)并且它无法访问.
编辑:我正在尝试实现博客中提到的方法.
根据它,elmah.axd页面应该在添加包后立即可访问.但这对我不起作用.
更新:错误登录工作正常BTW.唯一的问题是我无法在浏览器中查看错误日志.
elmah ×9
asp.net ×4
c# ×2
.net ×1
.net-4.5 ×1
asp.net-mvc ×1
azure ×1
elmah.mvc ×1
exception ×1
web-services ×1