私はC#からVBに変換したMVCプロジェクトがあり、問題があります。このプロジェクトには、ログインしたユーザー名を取得しようとするControllerBaseクラスの拡張メソッドIsSysAdmin()があります。 WebサイトはWindows認証を使用するように設計されており、ログインレベルのユーザーのみがサイトへのアクセスを許可するエントリ(deny users = "?")を含む、ルートレベルweb.configの適切なエントリを有効にします。 IsSysAdmin()関数は、サイトの共有レイアウトビューでRazor参照によって呼び出されます。ここでControllerContext.HttpContext.Userが空です
は、機能のためのVBコードです:ここでは
<Extension()>
Public Function IsSysAdmin(ByVal controller As ControllerBase) As Boolean
Dim bIsSysAdmin As Boolean = False
Dim loggedInUser = controller.ControllerContext.HttpContext.User.Identity.Name
---- Other code
Return bIsSysAdmin
End Function
は、C#のコードです:
public static bool IsSysAdmin(this ControllerBase controller)
{
bool bIsSysAdmin = false;
string loggedInUser = controller.ControllerContext.HttpContext.User.Identity.Name;
---- Other code
return bIsSysAdmin;
}
C#バージョンは何の問題もありません。 loggedInUser変数は、実際にログインしているユーザー名を取得します。しかし、VB版では、loggedInUserは空白です。
明らかに私はここに何かを見逃していますが、私は何がわかりません。
を有効にするには値?そうであれば、問題は拡張メソッド内にはないので、質問をより簡潔に質問することができます – LordWilmore
そして、要素またはIISExpress設定でweb.configの匿名アクセスを無効にしましたか? –
Fran
はい、VS Debuggerを使用してcontroller.ControllerContext.HttpContext.User.Identity.Nameをチェックしました。 C#バージョンでは値を持ちますが、VBバージョンでは値がありません。 – Roger