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メンバーシッププロバイダーを使用しても同じ問題が発生しました。

構成の問題でした。一部のパラメータが正しく設定されていません。

多分この記事はあなたを助けるでしょう。

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

(現時点で)私が考えることができるのは、type属性に問題があるか、必要な依存関係のすべてをBinにコピーしなかった可能性があるということです。

幸運を

于 2010-01-06T20:18:07.647 に答える
0

この構成(メンバーシップだけでなく、アプリケーション構成全体を意味します)を別のマシンでテストしたことがありますか?

アプリケーションがCommerceServerのすべての要件を満たしていることを確認しますか?最後に、baseanconfiureから仮想マシンにコマースサーバーをインストールして、初めて構成するときに(構成ファイルをコピーしないでください。新しいファイルをコピーしないでください)、エラーがあるかどうかをテストすることをお勧めします。問題が解決した場合(現在の構成ファイルを仮想マシン構成ファイルに置き換え、

それでもエラーが続く場合は、構成に問題があることを意味しているため、変更する必要があります。

別の(仮想)マシンに再インストールした後に何が起こるかを教えてください。

于 2010-01-06T10:48:28.347 に答える
0

私は以前に同様の問題に遭遇しました。この問題は、複数のWebサーバーでInProcセッション状態を使用したことが原因でした。1つのアプリケーションがオフラインにならない場合、ロードバランサーはすべてのセッションを新しいサーバーに転送しようとしました。新しいサーバーにはこれらのユーザーからのセッションがなかったためObject Not Set to...、メンバーシッププロバイダーがセッションオブジェクトにアクセスしようとしたときにエラーが発生しました。

この問題を修正するために、セッションを管理するSQLServerをセットアップしました。あなたはここでそれを行う方法を見ることができます。

于 2010-01-07T19:32:47.293 に答える
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 に答える