C# 如何在oracle coherence POF配置中指定完整的.net类型名称?
我在我的C#项目中使用oracle coherence。 .Net项目引用了一致性,它通过“注入”我的类型来设置一些一致性属性。POF配置的示例之一:C# 如何在oracle coherence POF配置中指定完整的.net类型名称?,c#,gac,oracle-coherence,C#,Gac,Oracle Coherence,我在我的C#项目中使用oracle coherence。 .Net项目引用了一致性,它通过“注入”我的类型来设置一些一致性属性。POF配置的示例之一: <user-type> <type-id>1008</type-id> <class-name>MyTypeName, MyAssembly, version=1.2.3.4, publicKeyToken=0f73b23f05811dc2</class-name> </u
<user-type>
<type-id>1008</type-id>
<class-name>MyTypeName, MyAssembly, version=1.2.3.4, publicKeyToken=0f73b23f05811dc2</class-name>
</user-type>
1008
MyTypeName,MyAssembly,版本=1.2.3.4,publicKeyToken=0F73B03F05811DC2
即使所有my类型都是通过使用带有版本和公钥标记的全名来指定的,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>
我发现:
您不需要在类名中指定完全限定的类型名
元素。类型和程序集名称足够了
但如果我想指定完全限定名呢
--编辑
现在我遇到的新问题是关于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.Identity变压器,
MyAssembly,版本=1.2.3.4,
publicKeyToken=0F73B03F05811DC2,区域性=中性“
MyAssembly.Identity变压器,
MyAssembly,版本=1.2.3.4,
publicKeyToken=0F73B03F05811DC2,区域性=中性
在程序集绑定日志查看器中:
<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,版本=1.2.3.4 |域ID:1
调用程序集:一致性,版本=3.7.1.3,区域性=中性,PublicKeyToken=0ada89708fdf1f9a
我通过分析分解的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
但当它被指定为这样时,它可以:
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将其修复