【问题标题】:How to specify full .net type name in oracle coherence POF configuration?如何在 oracle coherence POF 配置中指定完整的 .net 类型名称?
【发布时间】:2012-09-04 10:34:51
【问题描述】:

我在我的 C# 项目中使用 oracle coherence。 .Net 项目引用了 Coherence,它通过“注入”我的类型来设置一些 Coherence 属性。 POF 配置示例之一:

<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>

但我想避免这种情况(不是每个应用程序都可以有一个 app.config - 比如 PowerShell)。

在 Oracle 文档 http://docs.oracle.com/cd/E18686_01/coh.37/e18678/net_intobjects.htm#BABJCBDD 我发现:

你不需要在类名中指定一个完全限定的类型名 元素。类型和程序集名称就足够了。

但是如果我想指定完全限定名怎么办?

--编辑

我遇到的新问题是 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,版本=1.2.3.4, publicKeyToken=0f73b23f05811dc2,文化=中性”
MyAssembly.IdentityTransformer, MyAssembly,版本=1.2.3.4, publicKeyToken=0f73b23f05811dc2,文化=中性

程序集绑定日志查看器中:

警告:为程序集提供了部分绑定信息:警告: 程序集名称:MyAssembly,版本=1.2.3.4 |域 ID:1

调用程序集:Coherence,Version=3.7.1.3,Culture=neutral,PublicKeyToken=0ada89708fdf1f9a。

【问题讨论】:

    标签: c# gac oracle-coherence


    【解决方案1】:

    我通过分析 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 修复了它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 2013-06-20
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      相关资源
      最近更新 更多