저는 C#에서 VB로 변환 한 MVC 프로젝트가 있는데 문제가 있습니다. 이 프로젝트에는 로그인 된 사용자 이름을 가져 오려고하는 ControllerBase 클래스에 대한 확장 메서드 IsSysAdmin()이 있습니다. 이 웹 사이트는 Windows 인증을 사용하도록 설계되었으며 로그인 된 사용자 만 사이트에 액세스 할 수 있도록 허용하는 항목 (사용자 거부 = "?")을 포함하여 web.config 루트 수준에서 적절한 항목을 사용하도록 설정합니다. IsSysAdmin() 함수는 사이트의 공유 레이아웃보기에서 Razor 참조에 의해 호출됩니다. 여기 ControllerContext.HttpContext.User가 비어 있습니다.
은 함수의 VB 코드입니다 :public static bool IsSysAdmin(this ControllerBase controller)
{
bool bIsSysAdmin = false;
string loggedInUser = controller.ControllerContext.HttpContext.User.Identity.Name;
---- Other code
return bIsSysAdmin;
}
는 C# 버전은 아무 문제가 없습니다 :
여기<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# 코드입니다. loggedInUser 변수는 실제 로그인 된 사용자 이름을 가져옵니다. 그러나 VB 버전에서 loggedInUser는 비어 있습니다.
분명히 나는 여기에서 뭔가를 놓치고 있지만, 나는 무엇을 모른다.
를 사용하는 값? 문제가 확장 메서드 내에 있지 않으므로 더 간결하게 질문 할 수 있습니다. – LordWilmore
예, VS 디버거를 사용하여 controller.ControllerContext.HttpContext.User.Identity.Name을 확인했습니다. C# 버전에는 값이 있지만 VB 버전에는 값이 없습니다. – Roger