C# NHibernate在NUnit和控制台下工作,但在IIS下不工作[throws PropertyAccessException]

C# NHibernate在NUnit和控制台下工作,但在IIS下不工作[throws PropertyAccessException],c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有一个API,其中包含一个如下所示的对象: public class NOrgUnit { public virtual NOrgUnit Parent { get; set;} public virtual ISet<NOrgUnit> children { get; set; } // an Iesi 1.0.1 ISet public virtual Int64 Id { get; protected set; } public virtual

我有一个API,其中包含一个如下所示的对象:

public class NOrgUnit {
    public virtual NOrgUnit Parent { get; set;}
    public virtual ISet<NOrgUnit> children { get; set; } // an Iesi 1.0.1 ISet
    public virtual Int64 Id { get; protected set; }
    public virtual string Name { get; set; }

    // etc.
}

这几天来一直困扰着我。为什么应用程序在控制台中工作而不是在IIS中工作?

TI.Security.Core.Impl.Management.Provisioning.DAL.PersistentGenericSet是一个奇怪的类。这是定制的吗?如果是这样,它可能不会实现
Iesi.Collections.Generic.ISet
。如果它确实实现了它,则可能会出现加载多个Iesi程序集的问题


我从来没有听说过sitecore,所以可能它在后台做了一些奇怪的事情。

你是如何在控制台中配置Nhibernate而不是IIS的?“IIS”是一个相当宽泛的定义,你是指vs中的内置IIS服务器,还是一个“真正的”IIS,如果是,版本是什么?我在IIS 7.5下运行它。我没有任何不同的配置。这是来自另一个也使用Nhibernate的程序集。我没有注意到在错误消息中-你可能有什么发现,我会给你回复的。
public class NOrgUnitMap : ClassMap<NOrgUnit>
{
    public NOrgUnitMap()
    {
        Id(x => x.Id);

        Map(x => x.Name);

        References(x => x.Parent).Nullable();
        HasMany(x => x.children).AsSet();
    }
}
Org Service encountered unexpected exception [NHibernate.PropertyAccessException: Invalid Cast (check your mapping for property type mismatches); setter of TI.Organization.Core.Impl.DAL.Persistence.Entities.Hierarchy.NOrgUnit ---> System.InvalidCastException: Unable to cast object of type 'TI.Security.Core.Impl.Management.Provisioning.DAL.PersistentGenericSet`1[TI.Organization.Core.Impl.DAL.Persistence.Entities.Hierarchy.NOrgUnit]' to type 'Iesi.Collections.Generic.ISet`1[TI.Organization.Core.Impl.DAL.Persistence.Entities.Hierarchy.NOrgUnit]'.
   at (Object , Object[] , SetterCallback )
   at NHibernate.Bytecode.Lightweight.AccessOptimizer.SetPropertyValues(Object target, Object[] values)
   at NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValuesWithOptimizer(Object entity, Object[] values)
   --- End of inner exception stack trace ---
   at NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValuesWithOptimizer(Object entity, Object[] values)
   at NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValues(Object entity, Object[] values)
   at NHibernate.Persister.Entity.AbstractEntityPersister.SetPropertyValues(Object obj, Object[] values, EntityMode entityMode)
   at NHibernate.Engine.TwoPhaseLoad.InitializeEntity(Object entity, Boolean readOnly, ISessionImplementor session, PreLoadEvent preLoadEvent, PostLoadEvent postLoadEvent)
   at NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session, Boolean readOnly)
   at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)