在应用程序重新启动后首次初始​​化Membership.Provider时出错

时间:2009-12-31 01:44:48

标签: c# asp.net membership-provider microsoft-commerce-server

我们正在使用MS Commerce Server的Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider,有时在应用重启后首次初始​​化时我们会收到此错误:

System.Configuration.ConfigurationErrorsException - System.Web, Object reference not set to an instance of an object. (C:\Inetpub\web.config line 425)
   at System.Web.Security.Membership.Initialize()
   at System.Web.Security.Membership.get_Provider()
   ...

第425行是会员提供者规范:

<membership defaultProvider="UpmMembershipProvider">
  <providers>
    <clear />
    <add name="UpmMembershipProvider"
      applicationName="app"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      logonNameProperty="GeneralInfo.logon_name"
      requiresQuestionAndAnswer="true"
      requiresUniqueEmail="true"
      enableCreateDate="true"
      enableEmailAddress="true"
      enableLastLoginDate="true"
      profileDefinition="UserObject"
      passwordFormat="Hashed"
      maxInvalidPasswordAttempts="5"
      passwordAttemptWindow="1"
      type="Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider" />
  </providers>
</membership>

我们采用了内存转储,这就是我们得到的:

0:025> !dumpstack
OS Thread Id: 0x1080 (25)
Current frame: kernel32!RaiseException+0x53
ChildEBP RetAddr  Caller,Callee
1213e5d8 7d4e237e kernel32!RaiseException+0x53, calling ntdll!RtlRaiseException
1213e5ec 79e8002c mscorwks!Binder::RawGetClass+0x20, calling mscorwks!Module::LookupTypeDef
1213e5fc 79e8068f mscorwks!Binder::IsClass+0x23, calling mscorwks!Binder::RawGetClass
1213e608 79ef2a0f mscorwks!Binder::IsException+0x14, calling mscorwks!Binder::IsClass
1213e618 79ef2a36 mscorwks!IsExceptionOfType+0x23, calling mscorwks!Binder::IsException
1213e620 79ef2bbc mscorwks!RaiseTheExceptionInternalOnly+0x2a8, calling kernel32!RaiseException
1213e668 79e81e3d mscorwks!SetObjectReferenceUnchecked+0x19
1213e680 79fccf80 mscorwks!JIT_Throw+0xfc, calling mscorwks!RaiseTheExceptionInternalOnly
1213e6b8 79295aea (MethodDesc 0x791aad5c +0xa System.Collections.CompatibleComparer.Equals(System.Object, System.Object)), calling (MethodDesc 0x791aad50 +0 System.Collections.CompatibleComparer.Compare(System.Object, System.Object))
1213e6d4 792e5fcd (MethodDesc 0x7910c3d0 +0xcd System.Collections.Hashtable.get_Item(System.Object))
1213e6f4 79fcced5 mscorwks!JIT_Throw+0x1e, calling mscorwks!LazyMachStateCaptureState
1213e70c 792861dc (MethodDesc 0x791a5f58 +0x1c System.RuntimeType.IsPrimitiveImpl()), calling mscorwks!TypeHandle::GetSignatureCorElementType
1213e724 7a57b600 (MethodDesc 0x7a4abadc +0x70 System.Configuration.SettingsBase.GetPropertyValueByName(System.String)), calling (MethodDesc 0x7a4ac288 +0 System.Configuration.SettingsPropertyValue.get_PropertyValue())
1213e744 66918ad7 (MethodDesc 0x65f9871c System.Web.Security.Membership.Initialize()), calling mscorwks!JIT_Throw
1213e7a0 6673ecb9 (MethodDesc 0x65f985a0 +0x5 System.Web.Security.Membership.get_Provider()), calling (MethodDesc 0x65f9871c +0 System.Web.Security.Membership.Initialize())
...

之前有人遇到过这样的事吗?每次应用程序重新启动时都不会发生这种情况,并且它似乎不在某个特定服务器上(站点在负载均衡器后面的多个服务器上运行)

4 个答案:

答案 0 :(得分:3)

我在ASP.NET中使用SQL成员资格提供程序时遇到了同样的问题。

这是一个配置问题。某些参数设置不正确。

也许这篇文章会对你有帮助。

http://blogs.law.harvard.edu/brandonhaynes/2008/04/27/using-commerce-servers-upmmembershipprovider-with-dotnetnuke/

我能想到的(此时此刻)是你遇到了type属性的问题,或者你没有将所有必需的依赖项复制到你的Bin ..

祝你好运

答案 1 :(得分:0)

你有没有在另一台机器上测试这种移植(不仅仅是会员资格,我的意思是整个应用程序配置)?

您确定您的应用程序符合Commerce Server的所有要求吗? 最后我建议你在第一次配置的时候在虚拟机上安装你的商务服务器(不要复制配置文件 - 新的)并测试是否有错误?如果问题已解决(用虚拟机配置文件替换当前配置文件,

如果您的错误仍然存​​在,则表示您的配置存在问题,您应该更改它。

让我知道在另一台(虚拟)机器上重新安装后会发生什么。

答案 2 :(得分:0)

之前我遇到过类似的问题。问题是由于使用具有多个Web服务器的InProc会话状态。当一个应用程序没有脱机时,负载均衡器会尝试将所有会话转发到新服务器。新服务器没有来自这些用户的会话,因此当成员资格提供程序尝试访问会话对象时,我们收到Object Not Set to...错误。

要解决此问题,我们设置了一个SQL Server来管理会话。您可以看到如何执行此操作here

答案 3 :(得分:0)

不是

中web.config中指定的类型
type="Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider"

必须遵循System.Type.GetType(string typeName)文档中指定的约定,即是否必须包含程序集,也可能包含版本号和所有爵士乐?至少像是:

type="Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider, Microsoft.FancyCommerceServerAssembly"

甚至

type="Microsoft.CommerceServer.Runtime.Profiles.UpmMembershipProvider, Microsoft.FancyCommerceServerAssembly, Version=6.6.6.0, Culture=neutral, PublicKeyToken=..."

相关问题