在控制台应用程序中为XML文件设置ELMAH

问题描述:

我试图在我的控制台应用程序中使用ELMAH。我只是想学习绳索,以免我的.net经验不足。我只是想创建一个非常简单的控制台应用程序&使用ELMAH登录XML文件。我已经从NuGet下载了安装"Elmah on XML Log"的&。所以,我认为它在我的引用文件夹中处于活动状态。我按照this link中的说明进行操作:在控制台应用程序中为XML文件设置ELMAH

当然,我稍微修改它以使用XML。

<?xml version="1.0" encoding="utf-8"?> 
<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"/> 
    <section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah"/> 
    </sectionGroup> 
</configSections> 
<elmah> 
<security allowRemoteAccess="yes" /> 
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="C:\temp\elmah_logs\" /> 
</elmah> 
<system.web> 
<httpModules> 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> 
</httpModules> 

<httpHandlers> 
    <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
</httpHandlers> 
</system.web> 
<location path="elmah.axd"> 
<system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
</system.web> 
</location> 

但在我的主程序,我无法访问参考,并开始使用ELMAH。这是我非常简单的代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using Elmah; // Complains that missing a directive or assembly 

namespace Test_004 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     int y = 4; 
     int z = 0; 
     try 
     { 
      var x = y/z; 
     } 
     catch (Exception ex) ErrorSignal.FromCurrentContext().Raise(ex); // because of above, this fails 
    } 
} 
} 

我在这里错过了什么?在此先感谢.Net n00bie。

也许,它下面的错误可能会提供一些线索:

错误1类型或命名空间名称“ELMAH”找不到(是否缺少using指令或程序集引用?)

警告2引用的程序集“Elmah”无法解析,因为它依赖于“System.Web,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”,它不在当前的目标框架中“.NETFramework ,版本= V4.0,外形=客户”。请删除不在目标框架中的组件的引用,或考虑重新定位您的项目。 Test_004

警告3引用的程序集“Elmah”无法解析,因为它依赖于“System.Data.OracleClient,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”,它不在当前有针对性的框架“.NETFramework,Version = v4.0,Profile = Client”。请删除不在目标框架中的组件的引用,或考虑重新定位您的项目。 Test_004

+1

你在参考文件夹中有Elmah吗? – Joe 2012-04-09 14:54:28

+0

是的,我喜欢。我从Nuget安装并激活了这个软件包。 – 2012-04-09 19:37:36

我的猜测是你需要改变你的控制台application来使用完整的框架而不是客户端框架。你可以从控制台应用程序的属性页面(我认为它是构建选项卡,但我不能检查,因为我没有在这里安装VS)。

+0

Doh! Thx指出了。我无法相信我是那种无知的人。 – 2012-04-10 15:00:17

ELMAH专为ASP.NET应用程序而非控制台应用程序设计。

但是,有一个类似的问题here有一些关于如何将其用于控制​​台应用程序的建议。

+0

我看到那篇文章,但任何想法为什么我的intelisense不起作用?我正在使用所有必要的参考,但我仍然收到错误。 – 2012-04-09 19:46:10