NHibernate unable to load Proxy Factory

2019-08-05 11:19发布

问题:

I'm so stuck with trying to get a simple NHibernate app running. I'm doing "Getting started with NHibernate" step by step. First, I got a invalid property something error (managed to fix that).

Now, I get an exception:

Unable to load type 'NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle' during configuration of proxy factory class.

Possible causes are: - The NHibernate.Bytecode provider assembly was not deployed. - The typeName used to initialize the 'proxyfactory.factory_class' property of the session-factory section is not well formed.

Solution: Confirm that your deployment folder contains one of the following assemblies: NHibernate.ByteCode.LinFu.dll NHibernate.ByteCode.Castle.dll"

The files mentioned are in the Bin folder, where the QuickStart.dll is. I have no clue why this is happening! I'm at my wits end spending hours today trying to get this to work. The question at SO (Unable to load type ‘NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu’) did not help :(

The hibernate configuration from Web.config:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
        <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
        <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
        <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
        <property name="connection.connection_string">Server=(local);initial catalog=quickstart;Integrated Security=SSPI</property>
        <property name="connection.isolation">ReadCommitted</property>
        <property name="default_schema">Monitor.dbo</property>
        <property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
        <!-- HBM Mapping Files -->
        <mapping assembly="QuickStart"/>
    </session-factory>
</hibernate-configuration>

回答1:

Since your configuration file configures NHiberante to use the Castle dynamic proxy you will need NHibernate.ByteCode.Castle.dll in your bin folder, make sure that you reference this dll in your application and that it is copied to your project output path.

If your problem remains please enable the fusion log and check where NHibernate is looking for the dll.