2010-12-13 252 views
2

基本上我正在使用的應用程序有一堆參數,這些參數都是從一個xml配置文件控制的,該配置文件包含運行applcation(live和dev)的每臺機器的配置。我遇到的問題是,我希望能夠控制基於表單的身份驗證requiressl字段,以便在配置文件中可以指定此標誌。requiressl表單身份驗證

這應該會導致在live環境中requiressl標誌爲true,並且通過強制ssl並創建一個安全的auth cookie。對於開發環境,我不希望在所有開發機器上執行ssl。

我不想操縱web.config文件來做到這一點。我希望我的應用程序代碼讀取xml配置並相應地設置它們。

我已經嘗試使用反射器進入密封formsauthentication類,並已發現requiressl屬性只有一個get方法,沒有設置方法。

我也嘗試過實現formsauthentication配置類,無濟於事。 - 我不確定我是否正確地做到了這一點。

任何幫助尋找一個可能的解決方案,將不勝感激。

親切的問候,

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文件的原因是什麼?該文件的主要目的之一是將其配置爲特定的環境,這正是你想要做的。 – 2010-12-14 13:59:56

回答

1

儘管不推薦,但您可以使用反射來修改專用字段(屬性的後備存儲)。

嘗試here