2010-06-30 30 views
2

Je rencontre des difficultés avec mon projet et je le déploie sur mon hébergeur. Je suis dans un environnement d'hébergement partagé avec un niveau de confiance "Host Level".Réflexion LINQ avec la confiance au niveau de l'hôte

J'ai utilisé LINQ dans mon projet mais maintenant ils viennent de me dire que Reflection est désactivé sur leurs services partagés. Je crois que la réflexion est nécessaire pour pouvoir utiliser des variables dans les requêtes.

Quand je lance le projet dans l'environnement de confiance de niveau hôte, je reçois une exception:

MethodAccessException: 
System.Runtime.CompilerServices.StrongBox`1..ctor(System.__Canon) 

Quelqu'un at-il une expérience dans ce domaine? Toutes les suggestions seraient grandement appréciés

Il est à défaut sur ce code:

public override bool ValidateUser(string username, string password) { 

    using (var dc = new mcDataContext()) { 
     var query = (from c in dc.CF_Clients 
        where c.Client_ID == username 
        select new 
        { 
         c.Client_Password 
        }).FirstOrDefault(); 

    } 
} 
+0

Vous n'avez pas besoin de la permission de réflexion pour pouvoir utiliser LINQ, vous devez afficher le code réel qui est l'origine du problème. –

+0

Il semble que vous ne pouvez pas utiliser les variables dans les instructions linq? – Mike

+0

J'ai également supprimé le "var" et l'a remplacé par les types appropriés, mais cela ne fait aucune différence. Cela semble être un problème avec la variable de nom d'utilisateur. – Mike

Répondre

0

Est-ce que tout dans la requête est un membre public dans une classe publique?

Voir http://social.msdn.microsoft.com/forums/en-US/adodotnetdataservices/thread/0dc87db4-c145-456b-a19f-eebc16c09efb/

Une autre solution possible:

http://www.nullify.net/Article/332.aspx

+0

Oui, tout est public, et il fait toujours la même chose – Mike

+0

Il est clair que d'autres ont rencontré cela. J'ai ajouté un lien vers un article de blog qui a une solution différente. Je ne sais pas si vous aurez le droit de le faire, cependant. – TrueWill

0

Essayez de remplacer

from c in dc.CF_Clients 

avec

from Client c in dc.CF_Clients 

Ou quel que soit votre type est (dans ce cas J'ai supposé que c'est un objet client). Si vous avez implicitement casté les objets de la collection, il ne devrait pas avoir à utiliser la réflexion pour accéder aux propriétés de la requête.

+0

Cela n'a eu aucun effet. Je reçois toujours le même message sur le même morceau de code – Mike

+0

Enlevant la variable de nom d'utilisateur dans ma requête, et en le remplaçant par String.Empty, et le code fonctionne. – Mike