3

我们正在使用 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

4 回答 4

3

我在 ASP.NET 中使用 SQL Membership Provider 时遇到了同样的问题。

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

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

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

我能想到的(此时)是您的类型属性有问题,或者您没有将所有必需的依赖项复制到您的 Bin..

祝你好运

于 2010-01-06T20:18:07.647 回答
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=..."

?

于 2010-01-09T18:34:31.107 回答
0

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

为了解决这个问题,我们设置了一个 SQL Server 来管理会话。你可以在这里看到如何做到这一点。

于 2010-01-07T19:32:47.293 回答
0

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

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

如果你的错误仍然存​​在,这意味着你的配置有问题,你应该改变它。

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

于 2010-01-06T10:48:28.347 回答