C# NHibernate抛出log4net异常,告诉我格式良好的XML可能无效?

C# NHibernate抛出log4net异常,告诉我格式良好的XML可能无效?,c#,nhibernate,C#,Nhibernate,我有一个糟糕的控制台应用程序,我一直在玩,试图让NHibernate运行。我正在与它的变化无常作斗争,它有一个令人讨厌的习惯,即抛出异常,而这些异常很难找到解决方案 今天,我启动了我的项目并试图运行它,但我在log4net中遇到了错误,我甚至没有以任何方式直接引用它。我已将我的应用程序缩减为以下代码,但这种情况仍然存在: class Program { public static void Main(string[] args) { Configuration conf

我有一个糟糕的控制台应用程序,我一直在玩,试图让NHibernate运行。我正在与它的变化无常作斗争,它有一个令人讨厌的习惯,即抛出异常,而这些异常很难找到解决方案

今天,我启动了我的项目并试图运行它,但我在log4net中遇到了错误,我甚至没有以任何方式直接引用它。我已将我的应用程序缩减为以下代码,但这种情况仍然存在:

class Program {
    public static void Main(string[] args) {
        Configuration conf = new Configuration();
        Console.Write("Press any key to continue . . . ");
        Console.ReadKey(true);
    }
}
我得到的截断错误输出是:

log4net:ERROR DefaultRepositorySelector: Exception while reading ConfigurationSettings. Check your .config file is well formed XML.
System.Configuration.ConfigurationErrorsException: An error occurred creating the configuration section handler for appSettings: External component has thrown a
在SharpDevelop接管并给我一个异常对话框之前,错误似乎嵌套了大约10次

我有一个单独的hibernate配置文件和一个映射文件,但这两个文件都不是作为嵌入式资源包含的,也不是复制到输出目录的。app.config如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
    </startup>

    <appSettings>
    </appSettings>
</configuration>

如果没有@startup@部分,错误仍然会发生。这个文件中没有对nhibernate配置的引用-我在实例化配置类之后加载它

如果它昨天工作得不好,这也不会那么令人沮丧,我什么也没做,只是在映射中添加了两个字段(当它不工作时,我再次删除了这两个字段,这没有任何帮助)


我真的不知道如何阻止这个错误的发生。任何帮助都将不胜感激。

在我认为通常有一个元素之后。看起来它可能正在寻找其中一个。以下是指向nHibernate配置的链接,其中显示了一个示例:

希望这能为你指明正确的方向


鲍勃

以下是我的建议

  • 启用此选项,以便查看Log4Net引发异常的原因
  • 也许可以配置一个来查看控制台中的日志条目

  • 希望这将有助于您发现问题。

    我隐约记得在使用log4net时遇到了这样的错误。我不记得到底是什么修复了它,但请尝试以下方法

  • 即使没有对log4net的直接引用,也要确保按照Apache页面正确配置了log4net(http://logging.apache.org/log4net/release/manual/configuration.html)并在main中包含configure命令,以便更好地测量

    XmlConfigurator.Configure();
    
  • 如果appSettings部分为空,则可能引发异常。试着完全摆脱它。更好的是,在其中抛出一个虚拟节点。(是的,由于某种原因,虚拟值更好,我和其他任何人都无法解释)


  • 嗨,rcravens,在创建配置对象之前,我不会配置nhibernate。我描述的问题是在我没有做任何真正的改变之后开始出现的。它过去与我的设置配合得很好,我可以很好地检索和保存对象……如何从源代码管理/备份中恢复以前的版本?您是否有单独的log4net配置文件?@afsharm:没有,而且我从来没有过@迭戈:这只是一个便笺簿项目,还没有登记。还有一个例子说明了为什么我应该从一开始就养成对所有内容进行版本控制的习惯。看看您的配置,您是如何配置log4net的?必须在app.config文件中对其进行配置。忘了提到元素中的子元素。。。