2017-04-06 41 views
-2

我的web.config中有一個appSetting值,它包含一個Active Directory組名。即「Mydomain \ MyAdmin_Group」代碼中的字符串與來自ConfigurationManager.AppSettings的字符串在IsInRole中的行爲有所不同

我的代碼檢查用戶是否在指定的組中,但返回false。

User.IsInRole(ConfigurationManager.AppSettings["AdminGroup"].ToString()) 

如果我使用下面的代碼返回true。

User.IsInRole("MyDomain\\MyAdmin_Group") 

我在我的web.config appSetting是:

<add key="AdminGroup" value="MyDomain\\MyAdmin_Group"/> 

爲什麼出現 「硬編碼」 呼叫工作,但使用ConfigurationManager中的版本不行?

+0

做一個運行時測試並確認'ConfigurationManager.AppSettings [「AdminGroup」]。ToString()==「MyDomain \\ MyAdmin_Group」'。 –

+0

使用斷點和調試器進行快速檢查對於查找類似問題非常有用。直到代碼執行一些意想不到的事情,並檢查所有相關變量。將它們與已知的好值進行比較。編譯器沒有被破壞,總是有一個原因。 – asawyer

回答

2

你不需要配置文件中的雙反斜槓。只使用一個。雙反斜槓只用於C#來轉義反斜槓字符,它在字符串文字中有特殊用途。事實上,如果你在VB.NET中編碼,例如,字符串文字可以使用單個反斜槓,因爲它不是VB.NET中的轉義字符。

相關問題