我有一个继承自MembershipUser的自定义CustomMembershipUser.
public class ConfigMembershipUser : MembershipUser
{
// custom stuff
}
Run Code Online (Sandbox Code Playgroud)
我使用Linq-to-SQL从数据库读取并获取User实体; 要使此功能成为MembershipUser,我已定义了一个显式转换:
public static explicit operator MembershipUser(User user)
{
DateTime now = DateTime.Now;
if (user == null) return null;
return new MembershipUser("MagicMembershipProvider",
user.DisplayName, user.Id,
user.Email, "", "", true, false,
now, now, now, now, now);
}
Run Code Online (Sandbox Code Playgroud)
这个演员工作正常:
MembershipUser memUser = (MembershipUser) entityUser;
Run Code Online (Sandbox Code Playgroud)
但是,对CustomMembershipUser的第二次强制转换失败:
MembershipUser memUser = (MembershipUser) entityUser;
CustomMembershipUser custUser = (CustomMembershipUser) memUser;
Run Code Online (Sandbox Code Playgroud)
如果我将演员阵容改为
CustomMembershipUser custUser = memUser;
Run Code Online (Sandbox Code Playgroud)
我得到一个intellisense错误告诉我隐式强制转换不起作用,但存在显式强制转换.
...最重要的是,我无法明确定义从基类到子类的强制转换.我尝试过但失败了.我最不了解的是为什么从基类到子类的转换会失败?根据定义,子类具有基类的所有属性,因此问题是什么.
我试图定义从MembershipUser到CustomMembershipUser的显式转换(首先我为转换定义了一个私有构造函数):
private ConfigMembershipUser(MembershipUser …Run Code Online (Sandbox Code Playgroud) 我的类派生自System.Web.Security.MembershipUser我在提交表单时收到此错误.弹出窗体使用ASPPDF,并且在实现自定义MembershipProvider好东西之前应用程序没有此问题.请注意,这只是一个调试错误.当我没有调试时它似乎工作.有谁知道我怎么解决这个问题?
检测到NonComVisibleBaseClass消息:发出QueryInterface调用,请求COM可见托管类'XyAmpUser'的默认IDispatch接口.但是,由于此类没有显式的默认接口,并且派生自非COM可见类'System.Web.Security.MembershipUser',因此QueryInterface调用将失败.这样做是为了防止非COM可见基类受COM版本控制规则的约束.
谢谢,〜在圣地亚哥
asp.net pdf-generation membership-provider membershipuser visual-studio
我只是想知道如何手动检查用户为其安全问题的答案提供的值是否与他们当前的记录答案相匹配.我想使用构建来支持ASP.Net成员资格和成员资格用户对象.
我看到通过passwordrecovery控件可以返回实际的答案.但是我目前没有使用这个控件,因为它不符合我们用户的要求,所以需要很好的集成它.
在最糟糕的情况下,获取实际答案(如密码恢复控件确实)并在我们的应用程序中手动检查它是可以接受的.
最好的情况是某种API,我可以传递用户名和他们提供的安全问题的答案,并简单地指出答案是否正确.
任何帮助将不胜感激.
我试图获取当前登录用户的UserId,如本文中提到的http://msdn.microsoft.com/en-us/library/aa478949.aspx作为aspnet_Membership表的一部分.
这是我在寻找的地方:
MembershipUser user = null;
if (User != null && User.Identity != null && !string.IsNullOrEmpty(User.Identity.Name))
{
user = Membership.GetUser(User.Identity.Name);
}
if (user != null)
{
//int id = user.UserId;
}
Run Code Online (Sandbox Code Playgroud)
MembershipUser没有UserId.我试图将UserId用作我将创建的其他表的外键.我可以使用UserName,但我认为使用UserId可能更好.
我已经创建了自定义成员资格提供程序,操作MembershipUser.ProviderUserKey而不是UserName 对我来说更方便.所以,检索ProviderUserKey我执行这样的代码:
if (User.Identity.IsAuthenticated)
{
int UserID = (int)Membership.GetUser(User.Identity.Name).ProviderUserKey;
}
Run Code Online (Sandbox Code Playgroud)
但是,当GetUser()执行方法时,必须从数据库中检索用户数据,这对我不利.这是不必要的浪费服务器时间,无论这个时间有多短,我都想避免它.
有没有其他方法可以ProviderUserKey更方便的方式,User.Identity.Name以防万一?
我想听听你的想法.你如何在你的网页上解决这个问题?
谢谢.