My.User.IsInRole() не работает после перехода на 4.6.2 framework в vb.net

В настоящее время я работаю над одним запросом на миграцию, где нам нужно изменить структуру с 3.5 на 4.6.2. Здесь проблема заключается в том, что после изменения структуры ниже метод не показывает ожидаемый результат.My.User.IsInRole() возвращается null,

Может кто-нибудь, пожалуйста, предложите эквивалентный код для вышеупомянутого или предложите шаги для решения проблемы в моей Visual Studio. Раньше я сталкивался с проблемой с My.User.Name и изменил код на Environment.Username но для этого я не могу найти какой-то альтернативный метод.

1 ответ

My.User.IsInRole() не должен возвращаться null/Nothing, Возвращаемое значение Boolean,

В качестве альтернативы вы можете использовать System.Security.Principal Пространство имен, как в следующем примере:

Imports System.Security.Principal

Class PrincipalCheck
    Shared Function UserInRole(role As String) As Boolean
        Dim currPrincipal As New WindowsPrincipal(New WindowsIdentity(Environment.UserName))
        Return currPrincipal.IsInRole(role)
    End Function
End Class

Public Sub StartCheck()
   MsgBox(PrincipalCheck.UserInRole("MyDomain\MyGroup"))
End Sub

Но это должно вернуть тот же результат:

MsgBox(My.User.IsInRole("MyDomain\MyGroup"))
Другие вопросы по тегам