2010-12-13 15 views
2

基本的に私が取り組んでいるアプリケーションは、applcation(liveとdev)を実行する各マシンの設定を含むxml設定ファイルから制御される一連のパラメータを持っています。私が持っている問題は、フォームベースの認証requiresslフィールドを制御できるようにしたいので、設定ファイルでこのフラグを指定することができます。requiresslフォーム認証

これにより、ライブ環境でrequiresslフラグがtrueになり、sslが強制的に適用され、セキュリティ保護された認証クッキーが作成されます。開発環境では、私はすべての開発マシンにSSLを強制したくありません。

私は、これを行うためにweb.configファイルを操作したくありません。アプリケーションのコードをxmlの設定で読み込み、それに応じて設定したいと思います。

リフレクタを使用してシールされたformsauthenticationクラスに入ってみましたが、requiresslプロパティにgetメソッド、setメソッドがないことがわかりました。

私も、formsauthenticationconfigurationクラスを実装しようとしましたが、無駄です。 - 私はこれを正しくやっているとは確信していません。

これに可能な解決策を見つける上で助けがあれば大いに感謝します。

敬具、

Gurpreet

を試み1:

その後私はこれを試してみました:

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

私は 「プロパティセット方法はないというエラーメッセージが表示されます見つかりました "

試み2:解決しよう

typeof演算(をFormsAuthentication).GetField( "_ RequireSSL"、BindingFlags.Static | BindingFlags.NonPublic).SetValue(typeof(FormsAuthentication)、Config.Secure);

+0

web.configファイルを変更したくない理由は何ですか?そのファイルの主な目的の1つは、特定の環境に合わせて設定することです。これはまさにあなたがしようとしているようなものです。 –

答えて

1

リフレクションを使用してプライベートフィールド(プロパティのバッキングストア)を変更できます。

試行here