Membership.GetUser () всегда возвращает NULL в Visual Studio для Mac - PullRequest
0 голосов
/ 21 июня 2019

Я работаю над проектом ASP.NET MVC с использованием (VS 2019 Preview для Mac) и застрял при входе в систему и регистрации. Когда я звоню Membership.GetUser(login), я всегда получаю NULL в качестве возврата. На Windows 7 VM я могу получить информацию о пользователе (например, пароль), но Membership.ValidateUser() по-прежнему возвращает false даже на виртуальной машине.

Хорошо. Я проверил applicationName свойство в Web.config и в базе данных. Они равны. Мой Web.config:

...
<membership defaultProvider="AspNetSqlMembershipProvider">
    <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="EntitiesModel" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="10" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordFormat="Encrypted" applicationName="/" />
    </providers>
</membership>
...

В выводе VS2019 для Mac я получаю эту ошибку, когда:

var pass = user.GetPassword();

Ошибка

System.ArgumentNullException: ссылка на строку не установлена ​​для экземпляра строки. Имя параметра: s в System.Text.Encoding.GetBytes (System.String s) [0x00003] в / Users / builder / jenkins / workspace / build-package-osx-mono / 2018-10 / external / bockbuild / builds / mono-x64 / mcs /class/referencesource/mscorlib/system/text/encoding.cs:1091 в System.Web.Security.SqlMembershipProvider.EncodePassword (пароль System.String, System.Web.Security.MembershipPasswordFormat passwordFormat, соль System.String) [0x000ee] в / Users / builder / jenkins / workspace / build-package-osx-mono /2018-10/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.Security/SqlMembershipProvider.cs:1066 в System.Web.Security.SqlMembershipProvider.GetPassword (имя пользователя System.String, пароль System.StringAnswer) [0x00053] в / Users / builder / jenkins / workspace / build-package-osx-mono / 2018-10 / external / bockbuild / строит / моно-x64 / MCS / класс / System.Web / System.Web.Security / SqlMembershipProvider.cs: 545 в System.Web.Security.MembershipUser.GetPassword (System.String passwordAnswer) [0x00000] в / Users / builder / jenkins / workspace / build-package-osx-mono / 2018-10 / external / bockbuild / builds / mono-x64 /mcs/class/System.Web.ApplicationServices/System.Web.Security/MembershipUser.cs:124 в System.Web.Security.MembershipUser.GetPassword () [0x00000] в / Users / builder / jenkins / workspace / build-package-osx-mono / 2018-10 / external / bockbuild / builds / mono-x64 / mcs / class /System.Web.ApplicationServices/System.Web.Security/MembershipUser.cs:119 в BLL.Core.UserManager.LoginAndGetUser (вход в систему System.String, пароль System.String, System.String & msg, System.String checkedRole) [0x00031] в [пути к моему проекту] /BLL/Core/UserManager.cs:107 в BLL.Core.UserManager.Login (вход в систему System.String, пароль System.String, System.String & msg, System.String checkedRole) [0x0001c] в [путь к моему проекту] /BLL/Core/UserManager.cs:150

1 Ответ

0 голосов
/ 02 июля 2019

ASP.NET MVC - это инфраструктура, которая работает на Mac благодаря Mono. Это, скорее всего, не рекомендуется, поскольку Mono на сервере никогда не отличался хорошей производительностью или совместимостью (особенно когда речь идет об управлении пользователями), лучше всего использовать ASP.NET Core, который работает поверх .NET Core (для Mac / Linux / Win ).

...