ELMAH是否记录了异常,即使它们没有冒泡到应用程序?我想在发生异常时弹出消息并仍然记录异常.目前我已经把所有东西都放在try catch块中并且吐出消息,但这变得乏味.
不幸的是,我需要这样做.我正在使用ELMAH来处理我的错误日志.在我路由到我的error.aspx视图之前,我必须获取默认的ELMAH错误日志,以便我可以记录异常.你曾经能够使用
Elmah.ErrorLog.Default
Run Code Online (Sandbox Code Playgroud)
但是,现在标记为已过时.编译器指示我使用该方法
Elmah.ErrorLog.GetDefault(HttpContext context)
Run Code Online (Sandbox Code Playgroud)
MVC的上下文是HttpContextBase类型,它允许我们模拟它(YAY!).我们如何处理需要旧式HttpContext的MVC-unaware库?
我用Elmah.XmlFileErrorLog 尝试了这个解决方案但是我遇到了异常
System.ArgumentNullException was unhandled by user code
Message="Value cannot be null.\r\nParameter name: context"
Source="Elmah"
ParamName="context"
StackTrace:
at Elmah.ErrorSignal.FromContext(HttpContext context) in c:\builds\ELMAH\src\Elmah\ErrorSignal.cs:line 67
at Elmah.ErrorSignal.FromCurrentContext() in c:\builds\ELMAH\src\Elmah\ErrorSignal.cs:line 61
at ElmahHttpErrorHandler.ProvideFault(Exception error, MessageVersion version, Message& fault) in c:\Myapplication\App_Code\Util\ElmahHttpErrorHandler.cs:line 19
at System.ServiceModel.Dispatcher.ErrorBehavior.ProvideFault(Exception e, FaultConverter faultConverter, ErrorHandlerFaultInfo& faultInfo)
at System.ServiceModel.Dispatcher.ErrorBehavior.ProvideMessageFaultCore(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessageCleanup(MessageRpc& rpc)
InnerException:
Run Code Online (Sandbox Code Playgroud)
Web.Config文件
<configSections>
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, …Run Code Online (Sandbox Code Playgroud) 我们正在使用Elmah作为我们的错误记录系统,用于即将投入生产的应用程序.它非常有用,但是如果像这样投入生产,世界上任何人都可以访问错误日志,因为他们所要做的就是访问ourdomain.com/elmah.axd.
这显然不太理想.我原本打算将访问该页面仅限于我们公司内的IP地址,但现在我们的SysAdmins说这是不可能的.所以我在这里问我怎么能阻止访问这个资源?
我们在IIS 6上运行ASP.NET MVC应用程序.
我在Application_Start上生成一个线程,并希望记录异常.没有Context/HttpContext/HttpContext.Current,所以我怎么能让它登录?
目前,它没有捕获我的线程中的任何异常,如果我写,ErrorSignal.FromCurrentContext().Raise(ex);我得到一个关于上下文的错误不能为空.
也许我可以创建一个虚拟的HttpContext但不知何故我认为这不会很好.
-edit-我试过ErrorSignal.Get(new HttpApplication()).Raise(ex);,它似乎没有拿起那个例外.
有没有办法在ELMAH中记录发布请求数据?
我收到错误电子邮件,虽然错误日志包含URL,请求方法等,但我没有看到实际的POST数据.
例如,
以下是实际请求示例:/ bep/KotexCode/GetCode?stickerCode = 1234532
但是,日志仅显示请求URL而不是变量stickerCode.谢谢!
编辑 抱歉,我应该检查项目网站,但看起来这个功能是请求的. http://code.google.com/p/elmah/issues/detail?id=164
我刚刚安装了ELMAH.MVC(这里有更多信息),并想知道它的数据保存在哪里.我读过您可以选择设置数据库进行存储,但似乎默认安装使用"内存中"?它是如何工作的?如果我回收应用程序池或IIS网站,我是否会丢失所有数据?谢谢!
我在Windows Azure上运行了一个ASP.NET MVC Web角色,并在web.config中正确设置了ELMAH.我也有我的global.asax忽略*.axd路由.在本地,我可以加载/elmah.axd,但是当我部署到Azure时,我在该页面上获得了404.有没有人让ELMAH在Azure上工作?
我尝试过很多elmah nugets,但是他们没有使用ASP.NET Web API.有人知道为什么吗?那有什么工作吗?
我花了很多时间试图找出一个解决方法,但无济于事,所以我想我会看到这里是否有人有想法.
我在我的ASP.NET MVC3应用程序中使用Elmah.我使用的是前一个链接中接受的答案中完全相同的代码.
我在Global.asax中也有这个代码,用于显示带有正确HTTP响应的错误页面:
/// <summary>
/// The customErrors functionality provided by ASP.NET results in HTTP 302 redirects occurring which doesn't accurately reflect what the real HTTP code of the response was.
/// This method can be used to handle specific HTTP codes without an intermediate redirect.
/// </summary>
protected void Application_Error() {
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Error";
routeData.Values["action"] = "Error500"; …Run Code Online (Sandbox Code Playgroud)