Membership.GetUser()在Mac的Visual Studio上始终返回NULL

时间:2019-06-21 09:27:32

标签: c# asp.net-mvc macos mono asp.net-membership

我正在使用(适用于Mac的VS 2019预览版)进行 ASP.NET MVC 项目,并且在登录和注册时遇到了麻烦。当我打电话给Membership.GetUser(login)时,总是得到NULL作为回报。在 Windows 7的 VM上,我可以获得用户信息(例如,密码),但是Membership.ValidateUser()甚至在VM上仍返回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 for Mac输出中,在以下情况下出现此错误:

var pass = user.GetPassword();

错误是

  

System.ArgumentNullException:字符串引用未设置为String的实例。   参数名称:s     在/ Users / builder / jenkins / workspace / build-package-osx-mono / 2018-10 / external / bockbuild / builds / mono-x64 / mcs中的System.Text.Encoding.GetBytes(System.String s)[0x00003] /class/referencesource/mscorlib/system/text/encoding.cs:1091     在/ Users / builder / jenkins / workspace / build-package-osx-mono中的System.Web.Security.SqlMembershipProvider.EncodePassword(System.String密码,System.Web.Security.MembershipPasswordFormat passwordFormat,System.String salt)[0x000ee] /2018-10/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.Security/SqlMembershipProvider.cs:1066     在/ Users / builder / jenkins / workspace / build-package-osx-mono / 2018-10 / external / bockbuild /中的System.Web.Security.SqlMembershipProvider.GetPassword(System.String用户名,System.String passwordAnswer)[0x00053]内部版本/mono-x64/mcs/class/System.Web/System.Web.Security/SqlMembershipProvider.cs:545     在/ Users / builder / jenkins / workspace / build-package-osx-mono / 2018-10 / external / bockbuild / builds / mono-x64中的System.Web.Security.MembershipUser.GetPassword(System.String passwordAnswer)[0x00000] /mcs/class/System.Web.ApplicationServices/System.Web.Security/MembershipUser.cs:124     在/ Users / builder / jenkins / workspace / build-package-osx-mono / 2018-10 / external / bockbuild / builds / mono-x64 / mcs / class中的System.Web.Security.MembershipUser.GetPassword()[0x00000] /System.Web.ApplicationServices/System.Web.Security/MembershipUser.cs:119     在[我的项目路径] /BLL/Core/UserManager.cs:107中的BLL.Core.UserManager.LoginAndGetUser(System.String登录名,System.String密码,System.String&msg,System.StringcheckedRole)[0x00031]     在[我的项目路径] /BLL/Core/UserManager.cs:150中的BLL.Core.UserManager.Login(System.String登录名,System.String密码,System.String&msg,System.StringcheckedRole)处[0x0001c] / p>

1 个答案:

答案 0 :(得分:0)

由于Mono,ASP.NET MVC是在Mac上运行的基础结构。这很可能已被弃用,因为服务器上的Mono从未具有良好的性能或兼容性(尤其是在用户管理方面),最好的选择是使用ASP.NET Core,它运行在.NET Core之上(对于Mac / Linux) / Win)。

相关问题