我正在尝试使用.NET成员资格提供程序,但我不知道如何.
有我的代码:
using System;
using System.Web;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web.Security;
using System.Collections.Specialized;
using System.Data.SqlClient;
using System.Web.Security.SqlMembershipProvider;
namespace CustomMembership
{
public class CustomMembership
{
public static void CreateUser(String UserName, String Password, String Email, out MembershipCreateStatus Result)
{
SqlConnection Conn= new SqlConnection(@"Data Source=A-PC\SQLEXPRESS;Initial Catalog=OyunSitesi;User ID=XXX;Password=XXX");
Conn.Open();
SqlCommand CreateUserCommand= new SqlCommand("Inser Into Uyeler (UyeKullaniciAdi,UyeSifre,UyeEposta,UyeGrubu) Values('"+KullaniciAdi+"','"+Sifresi+"','"+EpostaAdresi+"')",Conn);
CreateUserCommand.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
代码继续......
我的问题是这个代码返回The type or namespace name "MembershipCreateStatus" could not be found (Are you missing a using directive or an assembly reference?). …
我正在编写一个MVC 3应用程序,我正在尝试实现自己的自定义成员资格提供程序(遵循Apress'Pro ASP.NET MVC 3 Framework中的示例).
我创建了我的自定义类,继承自MembershipProvider并且(使用ReSharper)使用NotImplementedExceptions实现了所有27个方法.
现在,我已经覆盖了书中所述的ValidateUser方法并且它工作正常,但我想使我的提供者更强大并实现其他方法(例如,设置MinRequiredPasswordLength和GetNumberOfUsersOnline).
是否有一些示例代码可以用来开始填充这些我可以调整以适合我自己的DB/Model模式的方法?
我当然可以使用反复试验来解决问题,但基本代码示例会有很大帮助.
编辑: 这个问题只是两次投票.如果您要进行投票,请发表评论,说明为什么我可以努力改进我的问题.
编辑2: 例如,对于以下方法:
public override int GetNumberOfUsersOnline()
{
throw new System.NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)
我可以尝试从头开始编写代码来查看一些Web日志,确定用户登录时间和近似值,如果它们仍处于打开状态,但这需要花费大量时间让我弄明白.由于所有这些代码都来自Microsoft为标准SqlMembershipProvider编写的相同接口,因此不存在包含此方法的代码(甚至来自MS)吗?如果是这样,我想要它,修改它,以便它使用我的数据库模式而不是aspnetdb默认模式.我更愿意使用某种基本代码.我认为这将是一个简单而相当标准的要求,但也许不是.
有没有人知道是否会创建一个与EF 5一起使用的默认MembershipProvider(如SqlMembershipProvider和ActiveDirectoryMembershipProvider),或者我们仍然需要创建自定义的(当然是Code First)?
我打开了Asp.Net Mvc 4 Internet App.模板.我为我的数据库设置连接字符串,如下所示:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=ALI-PC\;Initial Catalog=OsosPlusDb;Persist Security Info=True;User ID=sa;Password=sa;" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我运行项目,单击注册按钮.我创建了一个像这样的新用户:

当我点击注册发布时,我收到此错误:

但是它在数据库中创建了一个新用户并且它没有创建membership_user(成员资格表不包含添加的用户信息):

我找不到有什么问题.有时没有发生错误.
UPDATE
和例外快照:

AcoountModel:
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
}
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
InitializeSimpleMembershipAttribute.cs
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class InitializeSimpleMembershipAttribute …Run Code Online (Sandbox Code Playgroud) 大家早上好,
我试图在我的Web应用程序中实现我的自定义成员资格和角色提供程序,我已在IIS 7的实例中的默认网站下实现.我的Web应用程序在.NET 4应用程序池下运行.
但是,在设置相应的web.config后,我收到以下错误:
Parser Error Message: Default Role Provider could not be found.
Run Code Online (Sandbox Code Playgroud)
我在相应的Web应用程序的web.config的system.web部分中包含了以下代码块:
<membership defaultProvider="CustomMembershipProvider" userIsOnlineTimeWindow="20">
<providers>
<clear/>
<add name="CustomMembershipProvider" type="CustomProviders.CustomMembershipProvider,
CustomProviders, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=3563615169617648" applicationName="/"/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="CustomRoleProvider">
<providers>
<clear/>
<add name="CustomRoleProvider" type="CustomProviders.CustomRoleProvider,
CustomProviders, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=3563615169617648" applicationName="/"/>
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
现在我已经看到各种解释如何解决我之前提到的错误.他们中的大多数人似乎都建议我在我的提供者块中添加标签.有些人似乎建议我从machine.config中删除角色管理器.有些人似乎还建议不要删除或添加任何内容.最后一种方法似乎并不能说明我的Web应用程序是从IIS而不是本地计算机运行的.
最后,我尝试了这些方法,但收效甚微.有人可以向我解释我怎么能通过这个错误?提前致谢!
要么我迟到了党,要么我做错了什么.我正在使用Visual Studio 2013,我试图使用Membership类,但是using System.Web.Security;我的程序集中不存在名称空间.
我该怎么做才能解决这个问题?
注意:System.Web存在
目标:.NET Framework 4.5.1
我正在实现一个自定义成员资格提供程序,在创建MembershipUser对象之前,所有内容似乎都在游动.那时,我收到错误:
指定的成员资格提供程序名称无效.参数名称:providerName
在web.config会员密钥是
<membership defaultProvider="MembersProvider">
<providers>
<clear/>
<add name="MembersProvider" type="Members.Providers.MembersProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="DeviceDatabase" />
</providers>
</membership>
Run Code Online (Sandbox Code Playgroud)
从我的自定义User类创建MembershipUser对象时:
public static MembershipUser ToMembershipUser(User user)
{
MembershipUser member = new MembershipUser
("MembersProvider"
, user.Name
, user.Id
, user.EmailAddress
, user.PasswordQuestion
, user.Comment
, user.IsApproved
, user.IsLockedOut
, user.DateCreated
, user.LastLoginDate ?? DateTime.MinValue
, user.LastActivityDate ?? DateTime.MinValue
, user.LastPasswordChangedDate ?? DateTime.MinValue
, user.LastLockoutDate ?? DateTime.MinValue
);
return member;
}
Run Code Online (Sandbox Code Playgroud)
(我意识到我可能只是从MembershipUser继承我的User类,但它已经是现有类层次结构的一部分.老实说,我认为这是我第一次遇到多重继承的合法需求!)
我的感觉是new MembershipUser(...)providerName参数应该与设置的匹配web.config …
我知道它MembershipProvider在System.Web.Security命名空间中.我System.Web在我的项目中添加了一个引用,我using System.Web.Security在.cs文件中添加了一个指令 - 但正如你所看到的,VS2010不相信我:
找不到类型或命名空间名称'MembershipProvider'
(您是否缺少using指令或程序集引用?)

我在这里错过了什么?
我的应用程序具有自定义角色和成员资格提供程序.我已经注册他们在web.config中,但是当我尝试这样做if(User.IsInRole("Blah")),既不是我在RoleProvider的断点Initialize或IsUserInRole被击中.会员提供商工作正常,所以我想我必须从web.config中遗漏一些东西.这就是我所拥有的:
<system.web>
...
<membership defaultProvider="MyAppMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add name="MyAppMembershipProvider"
type="MyAppMembership.MyAppMembershipProvider"
connectionStringName="MyApp"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" writeExceptionsToEventLog="false" />
</providers>
</membership>
<roleManager defaultProvider="MyAppRoleProvider">
<providers>
<clear />
<add name="MyAppRoleProvider"
type="MyAppMembership.MyAppRoleProvider"
connectionStringName="MyApp"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" writeExceptionsToEventLog="false" />
</providers>
</roleManager>
</system.web>
Run Code Online (Sandbox Code Playgroud)
还有其他我需要的东西吗?
asp.net iis asp.net-membership roleprovider membership-provider
我在.NET Web应用程序中看到了一个奇怪的行为.它很少发生,但如果我坐在页面上并继续按F5,最终我会有Membership.GetUser()返回NULL,即使Request.IsAuthenticated返回true.
if (Request.IsAuthenticated)
{
MembershipUser user = Membership.GetUser(); //user is occasionally null.
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,这不应该发生,问题的间歇性使我认为这是一个错误,但除了将GetUser()调用放在WHILE循环中(这消除了问题,因为GetUser()在第二个工作尝试),我不知道还能找到导致这种情况的原因.我们在另一台服务器上使用Web服务作为我们的成员资格提供者,但我已将此消除为超时问题,这会返回不同的错误.
c# ×5
asp.net ×2
iis ×2
roleprovider ×2
security ×2
.net-4.5 ×1
asp.net-mvc ×1
c#-4.0 ×1
class ×1
membership ×1
namespaces ×1