我正在尝试测试用户创建。根据我的测试,我打电话给以下人员:
MembershipCreateStatus status;
// _session is my current NHibernate session.
var mmp = new MyMembershipProvider(_session);
mmp.CreateUser(username, password, "something@example.com", "", "", true, Guid.NewGuid(), out status);
在CreateUser
方法中,它实现了这个目标:
var user = new MembershipUser(Name, username, providerUserKey, email, passwordQuestion, passwordAnswer, isApproved, false, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now);
...在抛出此异常之前:
The membership provider name specified is invalid.
Parameter name: providerName
我的名字设置为MyMembershipProvider
,而在Web.config中我有:
<add name="OnyxMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
还有,我的连接字符串:
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
现在,我猜测问题是我的测试正在创建一个SQLite数据库,而web.Config正试图点击我的SqlServer数据库,但我不知道如何继续。
答案 0 :(得分:11)
该名称不应与web.config中指定的名称相同吗?
即。 OnyxMembershipProvider
答案 1 :(得分:1)
您可能需要考虑模拟会员提供商。您的单元测试应该是测试您的代码,而不是Microsoft的。
以下是使用Moq模拟会员提供商的一些信息: