C# 使用MS异常处理块获取奇怪异常

C# 使用MS异常处理块获取奇怪异常,c#,winforms,exception-handling,.net-3.5,enterprise-library,C#,Winforms,Exception Handling,.net 3.5,Enterprise Library,我已经创建了一个非常基本的日志记录块和异常处理块。在我的代码中,我用以下代码测试了异常处理(我知道日志块可以工作): public void RunScriptClean() { try { throw new FileNotFoundException(); } catch (FileNotFoundException ex) { var b = Ex

我已经创建了一个非常基本的日志记录块和异常处理块。在我的代码中,我用以下代码测试了异常处理(我知道日志块可以工作):

    public void RunScriptClean()
    {
        try
        {
            throw new FileNotFoundException();
        }
        catch (FileNotFoundException ex)
        {
            var b = ExceptionPolicy.HandleException(ex, "Logging Policy");

            if (b)
                throw;
        }
    }
然而,在catch块的第一行,我遇到了一个冗长的异常,我的应用程序崩溃了:

发生异常:当前生成操作(生成密钥生成密钥[Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicyImpl,Logging Policy])失败:无法解析类型“Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging,Version=4.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”。请验证拼写是否正确或是否提供了完整的类型名称。(策略类型配置对象策略,索引2)。

当它说类型无法解析时,我完全不知道它指的是什么。我添加了对Microsoft.Practices.EnterpriseLibrary.Common/ExceptionHandling/Logging和Ms.Practices.ObjectBuilder2的引用。这个类的顶部包含使用Microsoft.Practices.EnterpriseLibrary.ExceptionHandling的

添加了查看我的AppConfig文件的配置工具的屏幕截图:

我肯定我遗漏了一些基本的东西,但是很难找到EAB 4.1的教程-CodeProject有很多关于原始版本的内容,但我不能充分利用它们

Edit我尝试创建一个新的格式化程序并将其命名为
TextExceptionFormatter
,但这并没有改变任何事情。我不确定我的日志处理程序上的
FormatterType
属性是如何绑定到该节点的

以及App.config中的实际XML块:

  <exceptionHandling>
    <exceptionPolicies>
      <add name="Logging Policy">
        <exceptionTypes>
          <add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            postHandlingAction="NotifyRethrow" name="Exception">
            <exceptionHandlers>
              <add logCategory="General" eventId="100" severity="Error" title="Enterprise Library Exception Handling"
                formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                priority="0" useDefaultLogger="false" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                name="Logging Handler" />
            </exceptionHandlers>
          </add>
        </exceptionTypes>
      </add>
    </exceptionPolicies>
  </exceptionHandling>


但是,即使更改了
fullName
属性的版本段,我的应用程序的行为仍然相同。

好的,我能够找到一个使用日志处理程序的示例应用程序。原来我需要一个对异常处理的引用。日志记录

Microsoft.Practices.EnterpriseLibrary.Common
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging ****
Microsoft.Practices.EnterpriseLibrary.Logging
Microsoft.Practices.ObjectBuilder2
其中,我仅提及:

Microsoft.Practices.EnterpriseLibrary.Common
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling
Microsoft.Practices.EnterpriseLibrary.Logging
Microsoft.Practices.ObjectBuilder2

该错误消息和屏幕截图都告诉您,您的引用有问题。异常消息包括显然不正确的
PublicKeyToken=%token%”。您的配置似乎包含自己的异常,请看
Title`property值。我刚刚用它替换了token的值,对不起,它相当长,而且似乎是任意的。也许我错了!就“标题”而言,我真的不确定什么是属于那里的,我想那只是用作日志文件中条目的标题<代码>标题。这是日志条目的标题。默认值是企业库异常处理。如果愿意,您可以更改标题。
-MSDN。令牌值只是屏幕截图中的格式化程序类型。关于标题,我想说的是,从屏幕截图上看,当它试图解决这个问题时,它似乎抛出了一个异常。就个人而言,我从不使用配置工具,我只是查看实际的app.config。你能发布相关的细节吗?好的,编辑成包含实际的XML为什么你不使用最新版本的应用程序块6.0?很高兴你能找到它,祝你在这方面好运谢谢你指出这一点!如果其他人在EF 6中查找此程序集时遇到问题,您可以在Visual Studio的包管理器控制台中键入:
PM>Install Package EnterpriseLibrary.ExceptionHandling.Logging