si la estube leyendo, probe poner el reflection optimizer en false como dice el articulo pero sigue fallando.. gracias...
Mario Dal Lago --- El vie 27-ago-10, Alberto Alcaide <[email protected]> escribió: De: Alberto Alcaide <[email protected]> Asunto: Re: [NHibernate-Hispano] Consulta proxy dinamico Para: [email protected] Fecha: viernes, 27 de agosto de 2010, 15:50 Quizas esto te pueda servir, http://nhforge.org/wikis/howtonh/run-in-medium-trust.aspx Saludos, 2010/8/27 Mario Dal Lago <[email protected]> hola, tengo una aplicacion en un hosting llamado Dattatec, la aplicacion andaba sin problemas, hasta el otro dia donde empeze a recibir esta excepcion de NH. Unable to obtain public key for StrongNameKeyPair. [ArgumentException: Unable to obtain public key for StrongNameKeyPair.] System.Reflection.StrongNameKeyPair.nGetPublicKey(Boolean exported, Byte[] array, String container) +0 System.Reflection.StrongNameKeyPair.get_PublicKey() +30 System.AppDomain.InternalDefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, String dir, Evidence evidence, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark& stackMark, IEnumerable`1 unsafeAssemblyAttributes) +595 System.AppDomain.DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) +39 Castle.DynamicProxy.ModuleScope.CreateModule(Boolean signStrongName) +282 Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName() +125 Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(Boolean isStrongNamed) +68 Castle.DynamicProxy.Generators.Emitters.ClassEmitter.CreateTypeBuilder(ModuleScope modulescope, String name, Type baseType, IEnumerable`1 interfaces, TypeAttributes flags, Boolean forceUnsigned) +103 Castle.DynamicProxy.Generators.Emitters.ClassEmitter..ctor(ModuleScope modulescope, String name, Type baseType, IEnumerable`1 interfaces, TypeAttributes flags, Boolean forceUnsigned) +98 Castle.DynamicProxy.Generators.Emitters.ClassEmitter..ctor(ModuleScope modulescope, String name, Type baseType, IEnumerable`1 interfaces) +98 Castle.DynamicProxy.Generators.InvocationTypeGenerator.GetEmitter(ClassEmitter class, Type[] interfaces, INamingScope namingScope, MethodInfo methodInfo) +203 Castle.DynamicProxy.Generators.InvocationTypeGenerator.Generate(ClassEmitter class, ProxyGenerationOptions options, INamingScope namingScope) +234 Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.BuildInvocationType(MetaMethod method, ClassEmitter class, ProxyGenerationOptions options) +303 Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.GetInvocationType(MetaMethod method, ClassEmitter class, ProxyGenerationOptions options) +49 Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.GetMethodGenerator(MetaMethod method, ClassEmitter class, ProxyGenerationOptions options, CreateMethodDelegate createMethod) +196 Castle.DynamicProxy.Contributors.CompositeTypeContributor.ImplementMethod(MetaMethod method, ClassEmitter class, ProxyGenerationOptions options, CreateMethodDelegate createMethod) +98 Castle.DynamicProxy.Contributors.CompositeTypeContributor.Generate(ClassEmitter class, ProxyGenerationOptions options) +212 Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateType(String name, Type[] interfaces, INamingScope namingScope) +633 Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateCode(Type[] interfaces, ProxyGenerationOptions options) +1132 Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxyType(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options) +151 Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options) +61 Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] constructorArguments, IInterceptor[] interceptors) +329 Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, IInterceptor[] interceptors) +54 Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, IInterceptor[] interceptors) +55 NHibernate.ByteCode.Castle.ProxyFactory.GetProxy(Object id, ISessionImplementor session) in c:\CSharp\NH\nhibernate\src\NHibernate.ByteCode.Castle\ProxyFactory.cs:32 [HibernateException: Creating a proxy instance failed] NHibernate.ByteCode.Castle.ProxyFactory.GetProxy(Object id, ISessionImplementor session) in c:\CSharp\NH\nhibernate\src\NHibernate.ByteCode.Castle\ProxyFactory.cs:43 NHibernate.Tuple.Entity.AbstractEntityTuplizer.CreateProxy(Object id, ISessionImplementor session) in c:\CSharp\NH\nhibernate\src\NHibernate\Tuple\Entity\AbstractEntityTuplizer.cs:236 NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session) in c:\CSharp\NH\nhibernate\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:3750 NHibernate.Event.Default.DefaultLoadEventListener.CreateProxyIfNecessary(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options, IPersistenceContext persistenceContext) in c:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:223 NHibernate.Event.Default.DefaultLoadEventListener.ProxyOrLoad(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options) in c:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:154 NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent event, LoadType loadType) in c:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:86 NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType loadType) in c:\CSharp\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:2554 NHibernate.Impl.SessionImpl.InternalLoad(String entityName, Object id, Boolean eager, Boolean isNullable) in c:\CSharp\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:1427 NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session) in c:\CSharp\NH\nhibernate\src\NHibernate\Type\EntityType.cs:386 NHibernate.Type.EntityType.ResolveIdentifier(Object value, ISessionImplementor session, Object owner) in c:\CSharp\NH\nhibernate\src\NHibernate\Type\EntityType.cs:424 NHibernate.Engine.TwoPhaseLoad.InitializeEntity(Object entity, Boolean readOnly, ISessionImplementor session, PreLoadEvent preLoadEvent, PostLoadEvent postLoadEvent) in c:\CSharp\NH\nhibernate\src\NHibernate\Engine\TwoPhaseLoad.cs:78 NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session, Boolean readOnly) in c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs:592 NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) in c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs:460 NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) in c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs:236 NHibernate.Loader.Loader.LoadCollection(ISessionImplementor session, Object id, IType type) in c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs:1473 NHibernate.Loader.Collection.CollectionLoader.Initialize(Object id, ISessionImplementor session) in c:\CSharp\NH\nhibernate\src\NHibernate\Loader\Collection\CollectionLoader.cs:35 NHibernate.Persister.Collection.AbstractCollectionPersister.Initialize(Object key, ISessionImplementor session) in c:\CSharp\NH\nhibernate\src\NHibernate\Persister\Collection\AbstractCollectionPersister.cs:579 NHibernate.Event.Default.DefaultInitializeCollectionEventListener.OnInitializeCollection(InitializeCollectionEvent event) in c:\CSharp\NH\nhibernate\src\NHibernate\Event\Default\DefaultInitializeCollectionEventListener.cs:51 NHibernate.Impl.SessionImpl.InitializeCollection(IPersistentCollection collection, Boolean writing) in c:\CSharp\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:1639 NHibernate.Collection.AbstractPersistentCollection.Initialize(Boolean writing) in c:\CSharp\NH\nhibernate\src\NHibernate\Collection\AbstractPersistentCollection.cs:463 NHibernate.Collection.AbstractPersistentCollection.Read() in c:\CSharp\NH\nhibernate\src\NHibernate\Collection\AbstractPersistentCollection.cs:262 NHibernate.Collection.Generic.PersistentGenericSet`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() in c:\CSharp\NH\nhibernate\src\NHibernate\Collection\Generic\PersistentGenericSet.cs:229 donde el problema es la generacion del proxy, seguramente la gente del hosting, cambie los permisos a medium a trust o algo por el estilo. parte del problema lo resolvi cambiando los Session.Load por Session.Get, pero me quedo un solo lugar en una query que no evitar que se genere el proxy. tengo estas 3 clases : publicclass Temporada : Entity { public ISet<Galeria> Galerias { get; set; } public virtual string Name { get; set; } public virtual DateTime Creation { get; set; } protected Temporada() { Galerias = new HashedSet<Galeria>(); } public Temporada(string name):this() { Name = name; } public void AddGaleria(Galeria galeria) { Galerias.Add(galeria); galeria.Temporada = this; } public void RemoveGaleria(Galeria g) { g.Temporada = null; Galerias.Remove(g); } publicclass Galeria : Entity { public Linea Linea { get; set;} public Temporada Temporada { get; set; } private readonly IList<Imagen> imagenes; public IEnumerable<Imagen> Imagenes { get { return imagenes; } } internal Galeria() { } public Galeria(Linea r) { Linea = r; imagenes = new List<Imagen>(); } public void AddImagen(Imagen img) { imagenes.Add(img); } public void AddImageRange(IList<Imagen> imgList) { foreach (var img in imgList) { imagenes.Add(img); } } public void ClearImages() { imagenes.Clear(); } public void RemoveImagen(Imagen img) { imagenes.Remove(img); } } public class Linea : Entity { public virtual string Description { get; set; } public Linea() { } public Linea (string descripcion) { Description = descripcion; } } les saque el virtual a las referencias y colecciones para evitar el Lazy..pero con la siguiente query: var criteria = sessionFactory.GetCurrentSession().CreateCriteria(typeof (Temporada)); criteria.AddOrder(Order.Desc("Creation")) .SetMaxResults(count); return criteria.List<Temporada>(); la temporada y las galerias las trae bien, pero la referencia a Linea en las instancias de galeria con proxies. como puedo evitar que sea proxy ? el mapping generado con ConfORM es : <class name="Temporada"> <id name="Id" column="TemporadaId" type="Int32"> <generator class="hilo" /> </id> <set name="Galerias" inverse="true" cascade="all,delete-orphan"> <key column="TemporadaId" on-delete="cascade" /> <one-to-many class="Galeria" /> </set> <property name="Name" /> <property name="Creation" /> </class> <class name="Linea"> <id name="Id" column="LineaId" type="Int32"> <genera tor class="hilo" /> </id> <property name="Description" /> </class> <class name="Galeria"> <id name="Id" column="GaleriaId" type="Int32"> <generator class="hilo" /> </id> <many-to-one name="Linea" column="LineaId" not-null="true" /> <many-to-one name="Temporada" column="TemporadaId" not-null="true" /> <list name="Imagenes" access="field.camelcase" cascade="all"> <key column="GaleriaId" /> <list-index /> &nb sp; <one-to-many class="Imagen" /> </list> </class> disculpen la longitud del email! gracias! Mario Dal Lago -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Saludos, Alberto Alcaide Vargas Desarrollador de Software Fono 88077791 -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
