2009-06-17 4 views
0

je dois dire que jusqu'à présent, je l'ai probablement été sacrément chanceux que je ne l'ai jamais rencontré les problèmes associés à un site Web en cours d'exécution en fiducie moyenne. Je n'ai développé que des applications intranet ou j'ai utilisé une société d'hébergement en toute confiance. Mais l'hôte que l'on m'a demandé d'utiliser pour un projet récent fonctionne en moyenne confiance, alors j'essaie de faire fonctionner mon application. Quelques questions - je développe sur Windows XP. Est-ce que IIS peut être configuré pour une confiance moyenne (plus facile à déboguer) et/ou est-ce un paramètre web.config? Il y a une mine d'informations sur ce sujet et la courbe d'apprentissage est raide.provoquant une erreur non publique d'autorisations dans la réflexion sur la confiance moyenne

En second lieu, après beaucoup de tripoter et la suppression du code, je pense que cette ligne est à l'origine d'une erreur d'autorisations:

Pour chaque FieldInfo Comme FieldInfo En Type.GetFields (BindingFlags.Instance Ou BindingFlags.NonPublic Ou BindingFlags.Public)

quelqu'un peut-il clarifier c'est un candidat possible, esp. ce drapeau NonPublic? Ceci est la copie & code collé (Coding Horror a mis en évidence le risque de cela), donc je ne l'ai jamais vraiment pensé. Je suppose que la boucle est à travers chaque champ dans l'objet à la fois des domaines publics et non publics - et j'ai lu que les champs protégés sont interdits avec une réflexion sur la confiance moyenne.

Cheers, Rob.

Répondre

3

Désolé, Reflet avec équivaut à non publiques pleine confiance.

Si une certaine façon je ne pas confiance totale, mais avait une réflexion non publique, je pourrais tirer parti de cela en changeant mon propre niveau de confiance de code (chaînes inscriptibles, etc.).

0

Je vais signaler ce aussi fermé que personne n'a répondu et aussi il était juste prouver trop problématique pour essayer de recoder. Le programme n'est pas mal écrit mais utilise la réflexion très fortement pour le mappage des objets et pour être honnête, il est plus facile de trouver une société d'hébergement qui supporte une confiance totale.

2

Oui, un site Web sur XP peut être configuré pour fonctionner en fiducie moyen:

Dans le < system.web> section ajouter ce qui suit:

<!-- Case is important: it's Medium, not medium --> 
<trust level="Medium"/> 

Et vous êtes là. Ce que vous pouvez trouver, c'est que la plupart des hôtes exécutent leurs sites dans un paramètre d'approbation "Moyen" légèrement élevé, avec des droits supplémentaires au-delà de la valeur par défaut - leurs techniciens devraient être en mesure de vous dire leurs différences.

Si vous jetez un coup d'oeil dans:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web_mediumtrust.config 

vous verrez les paramètres par défaut qui sont appliqués.

La réflexion est l'un des éléments clés qui est limitée en fiducie moyenne - des Remarques sur la page GetFields:

If the requested field is non-public and the caller does not have ReflectionPermission to reflect non-public objects outside the current assembly, this method returns a null reference (Nothing in Visual Basic).

Comme cela a le potentiel de retour nul, vous ne devriez probablement la vérification de null avant commencez à l'itérer, ou vérifiez que FieldInfo n'est pas null/rien avant de l'utiliser.