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



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

  1. 导出本机C++API
  2. 本机C++dll的加载带有"延迟加载">
  3. 我在Web.config中为本机dll及其第三方dll设置了路径
  4. web.config文件中定义的asp兼容性
  5. 为访问本机dll的加载路径定义了Global.asax文件

只要我不创建包装器对象,我就可以运行服务,包装器对象在构造函数中创建本机C++对象。问题是创建本机C++对象。如果我用WCFTestClient测试它,我会得到不具体的错误:

未能调用服务。可能的原因:服务脱机或无法访问。

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

谢谢你的帮助!

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

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

相关内容

最新更新