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

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

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


person Sanath Pabba    schedule 14.03.2018    source источник


Ответы (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"))
person MatSnow    schedule 14.03.2018
comment
У вас есть идеи, почему My.User.Name не работает в 4.6.2? - person Sanath Pabba; 14.03.2018
comment
Нет, не совсем. is not working не является осмысленным описанием ошибки. Если вы хотите получить лучший ответ, вам нужно будет добавить дополнительную информацию к вашему вопросу, например, ваш код, сообщение об исключении/ошибке, которое вы получаете... - person MatSnow; 14.03.2018
comment
Обязательно предоставлю остальную информацию, а также - person Sanath Pabba; 15.03.2018