0

C# プロジェクトで oracle コヒーレンスを使用しています。.Net プロジェクトには Coherence への参照があり、タイプを「注入」することでいくつかの Coherence プロパティを設定します。POF 構成の場合の例の 1 つ:

<user-type>
  <type-id>1008</type-id>
  <class-name>MyTypeName, MyAssembly, version=1.2.3.4, publicKeyToken=0f73b23f05811dc2</class-name>
</user-type>

バージョンと公開鍵トークンを含むフル ネームを使用してすべてのタイプを指定しても、Coherence はそれを使用せず、MyAssemblyにバインドします。

MyAssemblyが GAC にあり、バインディングが失敗するため、これは私にとって大きな問題です。もちろん、アプリケーションの構成と設定を使用できます。

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <qualifyAssembly partialName="MyAssembly" fullName="MyAssembly,Version=1.2.3.4,publicKeyToken=0f73b23f05811dc2,culture=neutral" />
</assemblyBinding>

しかし、私はそれを避けたいと思います (PowerShell のように、すべてのアプリケーションが app.config を持つことができるわけではありません)。

Oracle ドキュメントhttp://docs.oracle.com/cd/E18686_01/coh.37/e18678/net_intobjects.htm#BABJCBDDで、次のことがわかりました。

class-name 要素内に完全修飾型名を指定する必要はありません。タイプとアセンブリ名で十分です。

しかし、完全修飾名を指定したい場合はどうすればよいでしょうか?

- 編集

私が抱えている新しい問題は、tangosol-coherence.override.xmlにあります。

<security-config>
    <identity-transformer>
      <class-name>MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, publicKeyToken=0f73b23f05811dc2, culture=neutral</class-name>
    </identity-transformer>
    <principal-scope>false</principal-scope>
</security-config>

私が得る例外:

クラス「MyAssembly.IdentityTransformer、MyAssembly、Version=1.2.3.4、publicKeyToken=0f73b23f05811dc2、culture=neutral」のインスタンス化に失敗しまし

アセンブリバインディング ログ ビューアー:

WRN: アセンブリの部分バインディング情報が提供されました: WRN: アセンブリ名: MyAssembly、バージョン = 1.2.3.4 | ドメイン ID: 1

アセンブリの呼び出し: Coherence、バージョン = 3.7.1.3、カルチャ = ニュートラル、PublicKeyToken = 0ada89708fdf1f9a。

4

1 に答える 1

0

Coherenceの逆アセンブルされたdllを分析することで、その問題を解決しました。

次のようになります。

Tangosol.Util.TypeResolver.Resolve(typeName);

次のように指定した場合、型を解決できません。

MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, publicKeyToken=0f73b23f05811dc2, culture=neutral

ただし、次のように指定されている場合は可能です。

MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, Culture=neutral, PublicKeyToken=0f73b23f05811dc2

そのため、tangosol-coherence.override.xml を変更すると修正されました。

于 2012-09-04T13:29:22.383 に答える