我编写了一个自定义MembershipProvider,它使用自定义数据库模式来存储成员,但是我无法弄清楚如何部署提供程序.我的目标服务器正在运行IIS7,我能够导航到添加.NET用户提供程序的对话框,但是它不是允许我选择包含提供程序然后是类的程序集,而是提供一个下拉列表几个MS书面提供者.
我是否需要将程序集放在特定位置,以便IIS发现我的MembershipProvider类?如果是这样,.dll需要去哪里?否则,如何告诉ASP.Net使用我的MembershipProvider?我见过的每个例子都只引用了完全限定的类名,但没有提到需要如何部署文件.
我有这个问题:"实现自定义MembershipProvider类是否需要您实现自定义成员资格类?" 我对在ASP.NET上实现自定义成员资格框架感到困惑.
我没有示例类来向您展示,但如果以前的网站使用的数据库或模式与ASP.NET使用的不同,该怎么办?
非常感谢!
我正在尝试在我的asp.net Web应用程序中实现自定义成员资格提供程序.问题是每当我调用"Roles.AddUserToRole"方法时,它都会写入asp内置的默认成员资格数据库.奇怪的是,当我调用"Membership.CreateUser"方法时,它会写入我的自定义成员资格表.不确定什么事情,任何帮助将不胜感激.
这里有一点我的web.config,如果这会有帮助:
name="" type="System.Web.Security.SqlMembershipProvider"
connectionStringName=""
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName=""
requiresUniqueEmail="true"
passwordFormat="Hashed"
Run Code Online (Sandbox Code Playgroud) 几个小时以来,我一直在反对这个问题,这对我来说毫无意义.
我已经制作了一个asp.net mvc 3应用程序,我已经实现了表单身份验证.我已经创建了自己的自定义提供程序,我实现了GetUser(..)方法和ValidateUser(...)方法,其余的实现抛出了一个未实现的异常
我可以在登录页面上将我的登录信息提供给AccountController,我会收到一个欢迎用户名!很好,所以登录似乎工作.
现在我在我的FooController上有3个动作
具体实现如下所示
[HttpPost]
public JsonResult FirstAction(int param1, string param2, string param3)
{
var userID = (int)Membership.GetUser().ProviderUserKey;
...
}
[HttpPost]
public JsonResult SecondAction(int param1, int param2, string param3)
{
var userID = (int)Membership.GetUser().ProviderUserKey;
...
}
Run Code Online (Sandbox Code Playgroud)
正如您可能已经猜到的那样,我Index使用jQuery ajax功能从我的View 调用FirstAction和SecondAction .
以下行抛出null referencce异常:
var userID = (int)Membership.GetUser().ProviderUserKey;
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它只在SecondAction中抛出一个null引用,该调用在FirstAction中工作正常.
我试过像这样拆分它
var user = Membership.GetUser();
var providerKey = user.ProviderUserKey;
var userID = (int)providerKey.
Run Code Online (Sandbox Code Playgroud)
然而它仍然失败了.
Membership.GetUser(..)返回的MembershipUser对象具有存储在providerUserKey中的整数,而不是常规成员资格实现所具有的Guid.
任何形状或形式的任何帮助非常感谢.
我正在使用默认的ASP.NET MVC成员资格提供程序,我想允许用户在创建帐户后修改他们的电子邮件.我不希望用户能够使用重复的电子邮件.
如何允许用户修改其电子邮件并检查该电子邮件未在数据库中的其他位置使用?在使用默认的成员资格提供程序时,我不确定进行此类检查的最佳方法.
注意 - 我知道会员提供商本身在用户尝试注册他们的电子邮件地址时执行此检查,我不知道如何在以后执行此检查(由于noobness).
注2 - 我只知道这种访问用户电子邮件的方法,这是访问它的正确方法吗?
MembershipUser useremail = Membership.GetUser(User.Identity.Name);
ViewBag.Email = useremail.Email;
Run Code Online (Sandbox Code Playgroud) 我想尝试使用成员资格和角色提供者方法.到目前为止一切都那么好,但我目前卡在创建用户的主题重复电子邮件.
[Test]
public void can_create_user_with_given_duplic_Email()
{
MembershipCreateStatus status = new MembershipCreateStatus();
provider.CreateUser("FirstUser", _Password, _Email, null, null, true, Guid.NewGuid(), out status);
provider.CreateUser("SecondUser", _Password, _Email, null, null, true, Guid.NewGuid(), out status);
Assert.AreEqual(MembershipCreateStatus.DuplicateEmail, status);
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我期待来自MembershipCreateStatus的重复电子邮件消息.
错误消息我实际上运行此测试得到的是以下
can_create_user_with_given_duplic_Email has failed:
Expected: DuplicateEmail
But was: ProviderError
Run Code Online (Sandbox Code Playgroud)
只是提到provider.CreateUser()没有问题.
我曾经在vs2010中创建网站项目,并在另一个数据库托管服务器(如GoDaddy)中创建一个简单的SQL MEMBERSHIP SCHEMA.我的数据库模式表如下所示.
aspnet_Applications
aspnet_Membership
aspnet_Paths
aspnet_PersonalizationAl lUsers
aspnet_PersonalizationPeruser
aspnet_Profile
aspnet_Roles
aspnet_SchemaVersions
aspnet_Users
aspnet_Usersl nRoles
aspnet_Web Event_Events
Run Code Online (Sandbox Code Playgroud)
但现在我正在尝试新的VS2012.默认项目使用fallowings表创建本地数据库:
Applications
Memberships
Profiles
Roles
Users
UserslnRoles
Run Code Online (Sandbox Code Playgroud)
,这与我以前看到的架构完全不同.没有aspnet_前缀,表格不同......我不能只重命名表格.
该aspnet_regsql工具创建旧版本.带aspnet_前缀..
如何在Visual Studio 2012中创建这个新架构?
如何首先使用代码将EF 5.0与成员资格提供程序集成?
我有自己的数据库架构,我想用它来注册用户等.
membership-provider code-first asp.net-mvc-4 entity-framework-5 simplemembership
最重要的功能是返回会员用户,而第二个功能则不。我已经为顶级功能获得结果的用户传递了用户名,但第二个只返回了null。有任何建议根据用户名获取用户吗?
public static MembershipUser getCCUser(Guid UserID)
{
return ((MembershipProvider)Membership.Providers["CC_MembershipProvider"]).GetUser(UserID, false);
}
public static MembershipUser getCCUser(string userName)
{
return ((MembershipProvider)Membership.Providers["CC_MembershipProvider"]).GetUser(userName, false);
}
Run Code Online (Sandbox Code Playgroud) 我在我的MVC4应用程序中设置了BetterCMS.它似乎正在工作,除了我无法弄清楚如何配置它使用MVC4互联网应用程序附带的简单成员资格提供程序.
http://www.devbridge.com/articles/better-cms-for-developers
请帮忙!.谢谢
编辑:我使用Internet模板创建了我的MVC4应用程序,该模板附带简单成员资格提供程序已经配置并正常工作.我想让那些我已经"注册"为BetterCMS用户的成员.