我正在使用(适用于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>
答案 0 :(得分:0)
由于Mono,ASP.NET MVC是在Mac上运行的基础结构。这很可能已被弃用,因为服务器上的Mono从未具有良好的性能或兼容性(尤其是在用户管理方面),最好的选择是使用ASP.NET Core
,它运行在.NET Core之上(对于Mac / Linux) / Win)。