在WCF服务应用程序中创建本机C ++ - 对象

时间:2014-02-14 20:29:14

标签: c# wcf

我的目的是运行一个访问C ++本机函数的Web服务。因此,我创建了一个WCF服务应用程序(包含契约和实现),它引用了围绕我的Native C ++代码的C ++ / CLI Wrapper。我做了以下步骤(来自http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx的2b)

  1. 导出本机C ++ API。
  2. 本机C ++ dll加载了“已加载延迟”
  3. 我在Web.config
  4. 中设置了原生dll及其第三方dll的路径
  5. 在web.config文件中定义了asp兼容性
  6. 定义了一个Global.asax文件,用于访问本机dll的加载路径
  7. 我可以运行该服务,只要我不创建包装器对象,它在构造函数中创建本机C ++对象。问题是创建本机C ++对象。如果我使用WCFTestClient测试它,我会得到非特定错误:

    无法调用该服务。可能的原因:服务处于脱机状态或无法访问。

    我的问题是:这个概念有问题吗?如果我从C#-Project中调用它,我可以使用这个包装器和本机C ++对象。我是否必须选择其他项目类型而不是WCF服务应用程序?

    感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这个概念是正确的,它应该可以正常工作。我认为当服务尝试创建本机C ++对象时,会发生错误/异常,并导致服务崩溃。我建议你编写一个小的C#测试程序,它调用C ++ / CLI DLL来创建本机C ++,如果这个小程序工作正常,那么将代码移到你的服务中。

或者您可以调试服务,找到实际错误,这也有帮助。