2011-11-01 3 views
0

J'ai un problème 'l'assemblage n'autorise pas les appelants partiellement approuvés' lors du déploiement de mon application de test locale sur l'hébergement Web partagé (godaddy).Fluent NHibernate - Château - godaddy - confiance moyenne

J'ai lu divers messages et solutions et celui qui nécessite le moins de changements à mon application semble être here.

Y at-il une DLL précompilée maintenant disponible que je pourrais utiliser sans reconstruire nhibernate car je n'ai pas accès à svn ou je sais exactement comment procéder?

Répondre

0

Je suppose que vous utilisez NH 3.2 bien que si vous utilisez NH Fluent alors je ne peux pas être sûr.

Un package on NUGET a été créé pour répondre aux environnements de confiance moyenne. Il y a aussi un blog post décrivant comment utiliser ce paquet.

Fondamentalement faire un package d'installation: -

PM> Installer-Package NHibernate.DependencyInjection

Ensuite, utilisez le code suivant: -

protected void Application_Start() { 
    Initializer.RegisterBytecodeProvider(); 
    ... 
    Rest of configuration code here 
} 

Vous n'avez pas besoin recompiler n'importe quoi.

+0

ne vous aide pas: [SecurityException:. Demande d'autorisation de type 'System.Security.Permissions.ReflectionPermission, de mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' a échoué] NHibernate. DependencyInjection.BytecodeProvider..ctor() +40 NHibernate.DependencyInjection.Initializer.RegisterBytecodeProvider() +40 .... Application_Start() dans Global.asax.cs: 59 –

0

J'ai rencontré le même problème et j'ai pu le résoudre en utilisant NHibernate.DependencyInjection.

Ce sont les étapes de mon travail:

1) installé le NuGet package;

2) Mis en œuvre l'interface IEntityInjector:

public class EntityInjector : IEntityInjector 
{ 
    public object[] GetConstructorParameters(System.Type type) 
    { 
     //return null if your objects have parameterless constructors 
     return null; 
    } 
} 

3) Dans le Global.asax Application_Start, je l'injecteur enregistré:

protected void Application_Start() 
{ 
    Initializer.RegisterBytecodeProvider(new EntityInjector()); 

    ... 
} 

J'espère que cela aide.