如何在服务器端的Dynamics Ax 2009中集成COM对象?

时间:2015-02-02 12:44:10

标签: axapta x++ dynamics-ax-2009

我有一个.NET 4.0 dll,我想在服务器端集成到Dynamics Ax 2009。在客户端(RunOn:客户端),它可以正常使用32位DLL。但是在服务器端(RunOn:服务器),它不起作用。

这是我做的: (1)我将64位dll的实例复制到AOS的bin文件夹中,并且 (2)我使用Regasm.exe将必要的条目添加到注册表中。

使用以下代码后:

server static void ComIntegrationTest(Args _args)
{
    COM com;
    ;
    new InteropPermission(InteropKind::ComInterop).assert();
    com = new COM('{A2686EE2-8382-3D04-B908-31AF4E5AF5B5}');
    CodeAccessPermission::revertAssert();
}

我收到以下错误消息: 类的COM对象' {A2686EE2-8382-3D04-B908-31AF4E5AF5B5}'无法创建。确保该对象已在计算机' MSS2008R2-AXAOS'上正确注册。 对象' COM'无法创建

或者,如果我使用Com类包装器向导将COM对象包装在x ++类中,并尝试创建包装类的实例,则会收到以下错误消息: 要求获得类型' InteropPermission'的许可失败。 对象' COM'无法创建。

修改

如果无法做到这一点,我如何将Dynamics Ax 2009与.NET 4.0集成?

无法直接引用GAC中的.NET 4.0 dll,因为Dynamics Ax 2009仅与.NET 3.5或以前版本的.NET兼容。

1 个答案:

答案 0 :(得分:1)

我认为你正在混合.Net和COM集成,它们生活在不同的星球上。

您应该strongly sign .Net程序集,然后register in GAC

另请参阅this problemthis description part 1以及part 2