2017-12-20 8 views
0

저는 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는 비어 있습니다.

분명히 나는 ​​여기에서 뭔가를 놓치고 있지만, 나는 무엇을 모른다.

+0

를 사용하는 값? 문제가 확장 메서드 내에 있지 않으므로 더 간결하게 질문 할 수 있습니다. – LordWilmore

+0

요소 또는 IISExpress 설정을 사용하여 web.config에서 익명 액세스를 해제 했습니까? – Fran

+0

예, VS 디버거를 사용하여 controller.ControllerContext.HttpContext.User.Identity.Name을 확인했습니다. C# 버전에는 값이 있지만 VB 버전에는 값이 없습니다. – Roger

답변

0

Visual Studio의 IISExpress 설정에는 기본적으로 익명 인증이 설정되어 있습니다.

프로젝트의 속성에서이 기능을 해제해야합니다.

  1. 솔루션 탐색기에서 프로젝트를 선택하십시오. 장애인
  2. 설정 Windows 인증을
  3. 클릭 F4
  4. 설정 익명 인증은 당신이 controller.ControllerContext.HttpContext.User.Identity.Name` 실제로 포함되어 있습니까 '것을 확인했다고 가정