我是ASP.NET MVC的新手,我正在寻找最简单的方法来设置全局错误处理,记录和报告(通过电子邮件).仅供参考,我的ASP.NET MVC应用程序作为Azure中的Web角色托管,但我试图避免使用任何特定于Azure的钩子.
看起来安装和配置ELMAH是一个很好的第一步.
当我看着NuGet时,我看到:
我想安装以下哪些软件包?
编辑:经过一些实验,我更困惑.在默认的MVC 4应用程序之上安装了三个选项之后,我比较了项目文件.似乎Elmah.Contrib.Mvc和Elmah.MVC都没有添加elmah.1.2.2包(我在安装基本ELMAH时得到).此外,两个包都不会将该<elmah>部分添加到Web.config.
那么......我是否需要首先安装ELMAH,然后安装一个"... MVC"软件包来获得他们可能得到的任何漂亮的改进?
我正在使用Elmah登录ASP.NET MVC项目,并且我收到了一些路径/prx2.php的404错误,而这些路径又将散列作为查询字符串参数传递.
我认为这是一个试图找到漏洞的扫描仪.因为我没有运行PHP,所以我很安全!但是,我想阻止ELmah报告此错误.
什么是在不实际创建/prx2.php页面的情况下排除这些类型的错误的最佳方法.我也想在配置文件中执行此操作,而不是按步骤执行此操作.
有任何想法吗?
我在我的项目中使用elmah - > Elmah.axd来查找错误.
有这样的错误:
System.Web.HttpException: The remote host closed the connection. The error code is 0x800703E3.
Generated: Sun, 27 Nov 2011 13:06:13 GMT
System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Web.HttpException (0x800703E3): The remote host closed the connection. The error code is 0x800703E3.
at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
at System.Web.HttpResponse.Flush(Boolean finalFlush)
at System.Web.HttpWriter.TransmitFile(String filename, Int64 offset, Int64 size, Boolean isImpersonating, Boolean supportsLongTransmitFile)
at System.Web.HttpResponse.TransmitFile(String filename, Int64 offset, Int64 length)
at SalarSoft.Utility.SP1.ResumeDownload.ProcessDownload(String fileName, String …Run Code Online (Sandbox Code Playgroud) 我有一个通过VS 2012 Azure项目部署的项目(从VS的右侧,而不是手动).Web角色项目设置为在发布模式下构建"仅pdb"调试信息,但是部署PDB时未打包并复制到Azure上的Web角色VM.如何让PDB包含在包中并传输到服务器?
我想在生产中包含我的PDB的原因是因为我想在我的ELMAH报告中获取行号.
我有Code First MVC 4应用程序.
我尝试安装NuGet软件包来记录Elmah - 一切似乎都运行正常 - 错误报告很好 http://myapp/elmah.axd
然后我注意到有一个Elmah.MVC包 - 所以我删除了原来的一个,并安装了它.它不再在这里工作:http://myapp/elmah.axd
我在一些地方读过,对于MVC应用程序,你应该使用'Elmah.MVC'软件包 - 而不是'Elmah'软件包 - 但为什么会这样呢?实际差异是什么?MVC 4网站仍然如此吗?
奇怪的是原始包装开箱即用,而MVC则没有.
我应该使用哪个以及为什么?
是否可以使用ASP.NET vNext配置ELMAH?如果是这样,怎么样?
鉴于甚至没有web.config,我甚至开始迷失.如果有人有或可以弄清楚,请与我们分享.
谢谢
我们使用ELMAH处理ASP.Net MVC c#应用程序中的错误,在我们捕获的异常中,我们正在做这样的事情:
ErrorSignal.FromCurrentContext().Raise(exception);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试对捕获的异常进行单元测试时,我得到以下消息:
System.ArgumentNullException: Value cannot be null.
Parameter name: context
Run Code Online (Sandbox Code Playgroud)
如何模拟FromCurrentContext()调用?我还应该做些什么呢?
仅供参考......我们目前正在使用Moq和RhinoMocks.
谢谢!
我在try-catch块中记录了Elmah的错误.这是代码;
try {
DateTime.Parse("poo");
} catch (Exception err) {
Elmah.ErrorSignal.FromCurrentContext().Raise(err);
}
Run Code Online (Sandbox Code Playgroud)
我想记录一些特定信息,例如可以从先前方法或属性在同一上下文中检索的一些信息,但Exception属性是只读的.最好的方法是什么?
我的主要目标是能够做类似下面的事情;
} catch (Exception err) {
err.Message += "poo";
Elmah.ErrorSignal.FromCurrentContext().Raise(err);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将elmah用于我的MVC应用程序,并且我已按照wiki上的步骤操作:http://code.google.com/p/elmah/wiki/MVC,但在尝试访问myapp/elmah时仍然如此.axd页面:
404 - 找不到文件或目录.
有人可以帮我吗?
OBS:我的IIS版本是7.5
如果有帮助我发布我的web.config的相关部分:
<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>
...
</connectionStrings>
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
<system.web>
...
<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, …Run Code Online (Sandbox Code Playgroud) 我已将elmah添加到asp.net mvc 4应用程序中.日志记录正在运行,现在我正在尝试配置安全性,但elmah没有获取设置,所有用户仍然可以看到日志.
这是一个内部网应用程序,因此我们使用windows集成secuirty.我正在尝试限制访问权限,以便只有domain\log_readers广告组的成员才能读取日志.
我在这里阅读了设置指南:http://code.google.com/p/elmah/wiki/SecuringErrorLogPages,我还阅读了SO和其他论坛上的几篇帖子,这些帖子让我添加了roleManager和WindowsRoleProvider配置一切都无济于事.
这是我的web.config的elmah部分:
<elmah>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on remote access and securing ELMAH.
-->
<security allowRemoteAccess="true" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/Logs" />
</elmah>
<location path="elmah.axd" inheritInChildApplications="false">
<system.web>
<authentication mode="Windows" />
<roleManager defaultProvider="WindowsProvider"
enabled="true" cacheRolesInCookie="false">
<providers>
<add
name="WindowsProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on using ASP.NET authorization securing ELMAH.
-->
<authorization>
<allow roles="domain\log_readers"/>
<deny users="*" />
</authorization>
</system.web> …Run Code Online (Sandbox Code Playgroud)