2010-12-13 42 views
2

Fondamentalement, l'application sur laquelle je travaille a un tas de paramètres qui sont tous contrôlés à partir d'un fichier de configuration XML, qui contient des configurations pour chaque machine qui exécute l'applcation (live et dev). Le problème que j'ai, c'est que je veux être en mesure de contrôler le champ requiressl d'authentification basée sur les formulaires, de sorte que dans le fichier de configuration, je puisse spécifier ce drapeau. Ceci devrait faire en sorte que l'indicateur requiressl soit vrai dans l'environnement en direct, et là, en appliquant ssl et créer un cookie d'authentification sécurisée. Pour l'environnement de développement, je ne souhaite pas appliquer ssl sur toutes les machines dev.requiressl forms authentication

Je ne souhaite pas manipuler le fichier web.config pour cela. Je voudrais que mon code d'application lise dans la configuration de xml et les place en conséquence.

J'ai essayé d'utiliser le réflecteur pour entrer dans la classe d'authentification des formes scellées, et j'ai trouvé que la propriété requiressl avait seulement une méthode get, pas de méthode set.

J'ai également essayé d'implémenter la classe formsauthenticationconfiguration, en vain. - Je ne suis pas sûr de le faire correctement.

Toute aide pour trouver une solution possible à ce problème serait grandement appréciée.

Cordialement,

Gurpreet

Tentative 1:

Par la suite, je l'ai essayé:

PropertyInfo field = typeof (FormsAuthentication).GetProperty("RequireSSL"); 
field.SetValue(typeof(FormsAuthentication), true, null) 

Je reçois un message d'erreur indiquant « méthode de jeu de propriétés non trouvé "

Tentative 2: SOLVED

typeof (FormsAuthentication) .GetField ("_ RequireSSL", BindingFlags.Static | BindingFlags.NonPublic) .SetValue (typeof (FormsAuthentication), Config.Secure);

+0

Quelles sont vos raisons de ne pas vouloir modifier le fichier web.config? L'un des principaux objectifs de ce fichier est de le configurer pour des environnements spécifiques, ce qui est exactement ce que vous essayez de faire. –

Répondre

1

Bien que cela ne soit pas recommandé, vous pouvez utiliser la réflexion pour modifier un champ privé (le magasin de sauvegarde de la propriété).

Essayez here