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 : > > public > class 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); > } > > > public > class 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
