EmK*_*Kay 5 asp.net asp.net-membership
我有两个共享会员提供商的网站.其中一个是ASP Playground站点,另一个是安装了ASP Playground站点集成包的站点.我们称他们为ASPPG网站和SIP网站.
我在SIP站点上运行Membership.GetAllUsers()时有时会出错.SIP拒绝此方法,因此它不是标准的ASP.NET版本.
它有时只会发生.我注意到只有在其中一个成员发生某种变化时才会发生这种情况.然后它必须重新创建在调用Membership.GetAllUsers()时存储所有用户的哈希表,这就像这种娱乐在某种程度上出错了.
除了我粘贴在"administratoren"下面的例外,登录的用户名已经改变了一些信息.
通过更新web.config强制网站卸载没有帮助.它无助于重新启动IIS或完全重新启动服务器.异常出现后,每次调用Membership.GetAllUsers()时都会一直显示.突然之间,异常消失,并且再次可以登录并运行Membership.GetAllUsers(),没有任何异常.它几乎看起来像错误在数据库中,并且修复错误的方法是加载ASPPG站点的任何页面.然后错误在SIP站点上得到修复.
导致异常的原因是什么?如何阻止它?
完整的例外是这样的:
'/'应用程序中的服务器错误.
项目已添加.密钥字典:'administratoren'密钥被添加:'administratoren'描述:在执行当前Web请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.异常详细信息:System.ArgumentException:已添加项.键入字典:'administratoren'键添加:'administratoren'
来源错误:
Linje 116:MembershipUserCollection allUsers;
Linje 117:lock(objLock){
Linje 118:allUsers = Membership.GetAllUsers();
Linje 119:}
Linje 120:源文件:[WebsiteLocation]\App_Code\MemberInfo.cs行:118
堆栈跟踪:(请注意,此堆栈跟踪中的MemberInfo.cs的行号可能有点偏.
[ArgumentException:Item已被添加.键入字典:'administratoren'键被添加:'administratoren']
System.Collections.Hashtable.Insert(Object key,Object nvalue,Boolean add)+7484392
System.Collections.Hashtable.Add(Object key,Object value)+11
System.Web.Security.MembershipUserCollection.Add(MembershipUser用户)+129
H:\ My Document\Visual Studio 2008\Projects\forumu\MembershipProviders\ASPPGSqlMembershipProvider.vb中的ASPPG.MembershipProviders.ASPPGSqlMembershipProvider.CreateMembershipUserCollectionFromDataView(DataView dv):656 ASPPG.MembershipProviders.ASPPGSqlMembershipProvider.GetAllUsers(Int32 pageIndex,Int32 pageSize,Int32&totalRecords)在H:\ My Document\Visual Studio 2008\Projects\forumu\MembershipProviders\ASPPGSqlMembershipProvider.vb:360 System.Web.Security.Membership.GetAllUsers(Int32 pageIndex,Int32 pageSize,Int32&totalRecords)+65 System.Web.Security.Membership .GetAllUsers()+ 26在D:\ Faelles\SVN-exports\DFF-umbraco\App_Code\MemberInfo.cs中的MemberInfo.GetAllMembers():d:\ Faelles\SVN-exports\DFF-umbraco中的71 usercontrols_GetMemberTopList.LoadTopMembers() \用户控件\ GetMemberTopList.ascx.cs:16中的usercontrols_GetMemberTopList.Page_Load(Object sender,EventArgs e)在d:\ Faelles\SVN-exports\DFF-umbraco\usercontrols\GetMemberTopList.ascx.cs:11 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,对象t,EventArgs e)+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+35 System.Web.UI.Control.OnLoad(EventArgs e)+99 System.Web.UI.Control.LoadRecursive ()+50 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI.Control .LoadRecursive()+ 141 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI .Control.LoadRecursive()+ 141 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI.Control.LoadRecursive()+ 141 System.Web.UI. Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+627版本信息:Microsoft .NET Framework版本:2.0.50727.3603; ASP.NET版本:2.0.50727.3618
MemberInfo.cs的内容如下:
public class MemberInfo {
public string Username { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string Fullname { get; set; }
public string AddressPrimary { get; set; }
public string AddressSecondary { get; set; }
public string Zip { get; set; }
public string Country { get; set; }
public string HomepageUrl { get; set; }
public string Id { get; set; }
public string MemberNo { get; set; }
public Boolean IsApproved { get; set; }
public string Email { get; set; }
public Boolean IsNotMember { get; set; }
public Boolean IsUpdated { get; set; }
public Boolean HasReceivedWelcomeMail { get; set; }
public int RandomNumber { get; set; }
public int MemberType { get; set; }
public MemberInfo() {
}
public MemberInfo(string _username, string _id) {
Username = _username;
MembershipUser userRequested = Membership.GetUser(Username);
ProfileBase profile = ProfileBase.Create(Username);
IsApproved = userRequested.IsApproved;
FirstName = profile.GetPropertyValue("Firstname").ToString();
MiddleName = profile.GetPropertyValue("Middlename").ToString();
LastName = profile.GetPropertyValue("Lastname").ToString();
AddressPrimary = profile.GetPropertyValue("AddressPrimary").ToString();
AddressSecondary = profile.GetPropertyValue("AddressSecondary").ToString();
Zip = profile.GetPropertyValue("Zip").ToString();
Country = profile.GetPropertyValue("Country").ToString();
HomepageUrl = profile.GetPropertyValue("HomepageUrl").ToString();
HasReceivedWelcomeMail = Boolean.Parse(profile.GetPropertyValue("WelcomeMailSent").ToString());
if (FirstName.Length > 2) {
string strFullName = FirstName + " " + MiddleName + " " + LastName;
Fullname = strFullName.Replace(" ", " ");
}
else {
Fullname = Username;
}
MemberNo = profile.GetPropertyValue("MemberNo").ToString();
IsNotMember = Boolean.Parse(profile.GetPropertyValue("NotMember").ToString());
Email = userRequested.Email;
Id = _id;
if (profile.GetPropertyValue("Description").ToString() != "") {
IsUpdated = true;
}
else {
if (umbraco.library.GetXmlNodeById("1352").Current.SelectSingleNode("node [@nodeName='" + Username + "']/node") == null) {
IsUpdated = false;
}
else {
IsUpdated = true;
}
}
RandomNumber = ss.NumberStuff.GenerateRandomNumber(0, 10000000);
MemberType = 1;
if (IsApproved == false && HasReceivedWelcomeMail == false) { // Not yet approved
MemberType = 1;
}
if (IsApproved == false && HasReceivedWelcomeMail == true) { // Deleted
MemberType = 2;
}
if (IsApproved == true && IsNotMember == false) { // Members
MemberType = 3;
}
if (IsApproved == true && IsNotMember == true) { // Administrators
MemberType = 4;
}
}
private static object objLock = new object();
public List<MemberInfo> GetAllMembers() {
return GetAllMembers(false);
}
public List<MemberInfo> GetAllMembers(Boolean bIncludeAdministrators) {
MembershipUserCollection allUsers;
lock (objLock) {
allUsers = Membership.GetAllUsers();
}
List<MemberInfo> memberInfoList = new List<MemberInfo>();
foreach (MembershipUser userCurrent in allUsers) {
MemberInfo mInfo = new MemberInfo(userCurrent.UserName, userCurrent.ProviderUserKey.ToString());
if (mInfo.Id == "0") {
continue;
}
if (mInfo.IsNotMember == true && bIncludeAdministrators == false) {
continue;
}
memberInfoList.Add(mInfo);
}
return memberInfoList;
}
public static String GetMemberTypeName(int intMemberType) {
switch (intMemberType) {
case 1: {
return "Endnu ikke godkendt";
}
case 2: {
return "Slettet";
}
case 3: {
return "Medlem";
}
case 4: {
return "Administrator";
}
default: {
return "";
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢 :)
编辑:添加了MemberInfo.cs的新来源并更新了我收到的错误消息.请注意,堆栈跟踪仍然是旧的,因此它所指的行号可能有点偏差.
编辑:有关错误的大量信息已更改.添加了新的MemberInfo.cs.从登录方法中删除了代码,因为我现在知道这不是错误的原因.
| 归档时间: |
|
| 查看次数: |
2685 次 |
| 最近记录: |