2017-04-06 10 views
-2

私はweb.config内にActive Directoryグループ名を保持するappSetting値を持っています。すなわち"Mydomain \ MyAdmin_Group"コード内の文字列とConfigurationManager.AppSettingsの文字列がIsInRoleで異なる動作をします

私のコードは、指定されたグループ内にユーザーがいるかどうかを確認しますが、falseを返します。

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

次のコードを使用するとtrueを返します。私のWeb.Configで

User.IsInRole("MyDomain\\MyAdmin_Group") 

私のAppSettingは次のとおりです。

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

なぜ「ハードコード化された」コール作業が、のConfigurationManagerを使用したバージョンは動作しませんか?

+0

ランタイムテストを行い、 'ConfigurationManager.AppSettings [" AdminGroup "]。ToString()==" MyDomain \\ MyAdmin_Group "'を確認してください。 –

+0

ブレークポイントとデバッガを使ったクイックレビューは、このような問題を見つけるのに最適です。コードが予期せぬことを行うポイントまで右に移動し、関連するすべての変数を調べます。それらを既知の良い値と比較してください。コンパイラは壊れていない、常に理由がある。 – asawyer

答えて

2

設定ファイルに二重バックスラッシュは必要ありません。ただ1つを使用してください。二重バックスラッシュは、文字列リテラル内に特別な目的を持つバックスラッシュ文字をエスケープするためにc#でのみ使用されます。 VB.NETでエスケープ文字ではないため、たとえば、文字列リテラルでは単一のバックスラッシュを使用できます。

関連する問題