代码之家  ›  专栏  ›  技术社区  ›  Glenn Slaven

初始化成员身份时出错。应用程序重新启动后首次提供程序

  •  3
  • Glenn Slaven  · 技术社区  · 15 年前

    我们使用的是MS Commerce服务器 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 回复  |  直到 15 年前
        1
  •  3
  •   Bogdan Maxim    15 年前

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

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

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

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

    我认为(此时)您的type属性有问题,或者您可能没有将所有必需的依赖项复制到bin中。

    祝你好运

        2
  •  0
  •   Nasser Hadjloo    15 年前

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

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

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

    请告诉我在另一台(虚拟)计算机中重新安装后会发生什么。

        3
  •  0
  •   Russ Bradberry    15 年前

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

    为了解决这个问题,我们设置了一个SQL服务器来管理会话。你可以看到怎么做 here .

        4
  •  0
  •   herzmeister    15 年前

    不是在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=..."
    

    ?