本文介绍了未设置MembershipUser.IsLockedOut并发生配置文件错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我遇到了Commerce Server 2009的UpmProvider成员资格提供程序的问题,该成员资格提供程序未在MembershipUser上设置IsLocked属性。 使用web.config中的默认参数,默认
类型为nvarchar(255)的字段u_logon_error_dates填充日期值,12次尝试后,长度为484,第13次尝试设置dt_last_lockedout_date但不设置IsLockedOut标志。还会发生以下错误:


System.ApplicationException:配置文件服务Update()失败。 ---> Microsoft.CommerceServer.Runtime.Profiles.CommerceProfileSystemException:无法将配置文件保留到底层存储。 ---> System.Runtime.InteropServices.COMException(0x80040E57):
命令中的字面值超出了关联列类型的范围。   在Microsoft.CommerceServer.Interop.Profiles.IProfileObject2.Update()

  在Microsoft.CommerceServer.Runtime.Profiles.Profile.Update()

   ---内部异常堆栈跟踪结束---

  在Microsoft.CommerceServer.Runtime.Profiles.Profile.Update()

  在Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipUser.Update()

扩展错误信息:

   ---内部异常堆栈跟踪结束---

  在Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipUser.Update()

  在Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipUser.LogInvalidPasswordAttempt(String property)

  在Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipUser.ValidateUser(String password)

  在Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider.ValidateUser(String username,String password)


如果我在web.config中添加以下参数,我会得到另一种行为。


  maxInvalidPasswordAttempts =" 6" passwordAttemptWindow = QUOT 1 QUOT; passwordLockoutPeriod =" 0"


在指定的尝试次数后,应用程序挂起登录操作,并给出以下错误:


System.Runtime.InteropServices.COMException(0xC1003F80):第三方提供商发生内部错误。   at ADODB.ConnectionClass.Execute(String CommandText,Object& RecordsAffected,Int32 Options)

  在Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider.ExecuteQuery(String query,Int32 pageIndex,Int32 pageSize,Int32& totalRecords)

  在System.Web.Security.Membership.FindUsersByEmail(String emailToMatch,Int32 pageIndex,Int32 pageSize,Int32& totalRecords)

  在System.Web.Security.Membership.FindUsersByEmail(String emailToMatch)


有关解决此问题的任何提示吗?


 




Brgds Jonas

解决方案

Hi,

I've encountered a problem with the UpmProvider membership provider for Commerce Server 2009 which doesn't set the IsLocked property on the MembershipUser. With the default parameters in web.config, the field u_logon_error_dates which has a default type of nvarchar(255) gets filled with date values and after 12 attempts, the length is 484 and the 13th attempt sets the dt_last_lockedout_date but not the IsLockedOut flag. The following errors also occur:

System.ApplicationException: Profile service Update() failed. ---> Microsoft.CommerceServer.Runtime.Profiles.CommerceProfileSystemException: Failed to persist profile to underlying stores. ---> System.Runtime.InteropServices.COMException (0x80040E57): Literal value in the command exceeded the range of the type of the associated column.    at Microsoft.CommerceServer.Interop.Profiles.IProfileObject2.Update()
   at Microsoft.CommerceServer.Runtime.Profiles.Profile.Update()
   --- End of inner exception stack trace ---
   at Microsoft.CommerceServer.Runtime.Profiles.Profile.Update()
   at Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipUser.Update()
Extended error information:
   --- End of inner exception stack trace ---
   at Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipUser.Update()
   at Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipUser.LogInvalidPasswordAttempt(String property)
   at Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipUser.ValidateUser(String password)
   at Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider.ValidateUser(String username, String password)

If I add the following parameters in web.config, I get another behaviour.

 maxInvalidPasswordAttempts="6" passwordAttemptWindow="1" passwordLockoutPeriod="0"

After the specified number of attempts, the application hangs on the logon action, and gives me the following error:

System.Runtime.InteropServices.COMException (0xC1003F80): Internal error occurred in 3rd party provider.   at ADODB.ConnectionClass.Execute(String CommandText, Object& RecordsAffected, Int32 Options)
   at Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider.ExecuteQuery(String query, Int32 pageIndex, Int32 pageSize, Int32& totalRecords)
   at System.Web.Security.Membership.FindUsersByEmail(String emailToMatch, Int32 pageIndex, Int32 pageSize, Int32& totalRecords)
   at System.Web.Security.Membership.FindUsersByEmail(String emailToMatch)

Any tips on solving this issue?


Brgds Jonas

解决方案


这篇关于未设置MembershipUser.IsLockedOut并发生配置文件错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-26 17:45