当前位置:编程学习 > C#/ASP.NET >>

NHibernate.Cfg.Configuration”的类型初始值设定项引发异常

NHibernate.Cfg.Configuration”的类型初始值设定项引发异常

在进行castle activerecord设计的时候,经常会出现“NHibernate.Cfg.Configuration”的类型初始值设定项引发异常。当时也不知道是怎么回事,反正是弄好了,谁知道第二次修改了一些东西以后,居然又出现了这个错误提示,但是当时就是不知道为什么,摸索了半天,原来是xml嵌入资源的事情。

如果你的项目中有App.config等配置文件,请将其设置为“嵌入的资源”,这样再运行的时候,就不会出错了

看详细教程

using NHibernate;
using NHibernate.Cfg;

Configuration cfg = new Configuration();
“NHibernate.Cfg.Configuration”的类型初始值设定项引发异常。
是怎么回事,我引入了dll和命名空间
[分析1]
进一步察看错误提示,有这样的InnerException:
{"未能加载文件或程序集“log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905”或它的某一个依赖项。系统找不到指定的文件。":"log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905"}问题可能就出在log4net身上
[解决方法]
果然,在app.config文件中加入下面的section:

  <log4net>
    <appender name="NHibernateFileLog" type="log4net.Appender.RollingFileAppender">
      <file value="Logs/nhibernate.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups教程 value="10" />
      <maximumFileSize value="100KB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n"  />
      </layout>
    </appender>

    <appender name="GeneralLog" type="log4net.Appender.RollingFileAppender">
      <file value="Logs/general.txt" />
      <appendToFile value="true" />
      <maximumFileSize value="100KB" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n"  />
      </layout>
    </appender>
    <appender name="DataLog" type="log4net.Appender.RollingFileAppender">
      <file value="Logs/data.txt" />
      <appendToFile value="true" />
      <maximumFileSize value="100KB" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n"  />
      </layout>
    </appender>

    <!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->

    <root>
      <level value="DEBUG"/>
      <appender-ref ref="GeneralLog" />
    </root>

    <logger name="NHibernate" additivity="false">
      <level value="DEBUG"/>
      <appender-ref ref="NHibernateFileLog"/>
    </logger>
    <logger name="Pushable.Data" additivity="false">
      <level value="DEBUG"/>
      <appender-ref ref="DataLog"/>
    </logger>
  </log4net>

同时修改configSections节为:

  <configSections>
    <section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System,
                    Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>

也就是加上log4net,不然会报错。运行的时候new configuration()通过了

[新问题]
当执行到:

ISessionFactory factory = config.BuildSessionFactory();时出现错误:
{"未能加载文件或程序集“Iesi.Collections, Version=1.0.0.1, Culture=neutral, PublicKeyToken=154fdcb44c4484fc”或它的某一个依赖项。系统找不到指定的文件。":"Iesi.Collections, Version=1.0.0.1, Culture=neutral, PublicKeyToken=154fdcb44c4484fc"}
[解决方法]

从nhibernate-1.0.4.0bin目录中拷贝Iesi.Collections.dll到其他目录(或者不拷贝),然后引用到所在项目中

补充:asp.net教程,.Net开发 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,