从Excel调用包含WCF Web服务的C#DLL

时间:2013-05-22 11:22:50

标签: c# wcf excel com

以前曾问过这个问题,但我的情况略有不同。

我有一个Excel插件,我们分发给现在需要连接到下游系统的用户。下游系统为我提供了一个WCF Web服务,因此我设计了一个C#DLL包装器,我可以通过COM公开它,它将与WCF Web服务进行通信,并通过COM接口将结果返回给Excel。

我现在正在使用Excel与COM包装器进行交流,但由于我还没有理解与Excel和.NET运行时版本相关的原因,我不得不为DLL恢复到Framework 3.5。问题是,当我在C#DLL中调用COM公开的方法时,我收到一条错误,返回“无法找到默认端点...”

这个错误似乎是因为服务配置没有被选中,显然是因为我没有app.config,因为这纯粹是一个独立的DLL。我可以将配置放在Excel.exe.config中我确定但这不是一个选项,因为不允许对用户进行更改Excel配置。而且我不能将值硬编码到C#代码中,因为我们需要使用外部配置文件配置不同的环境。

基本上我需要一个配置文件,我可以随我的DLL和excel一起分发,这样当excel调用我的COM暴露的C#DLL时,它还会选择Config文件并从中加载WCF端点配置那里。我知道如何使用ConfigurationManager读取配置文件,但我无法弄清楚如何让.NET知道此配置文件包含WCF服务的EndPoint信息。到目前为止我找到的唯一解决方案是覆盖默认的应用程序域配置加载,以便.NET为app.config默认设置加载手动指定的文件,但我为此在线使用的所有解决方案都使用.NET 4.5对象和代码,当我受限于.NET 3.5。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您应该考虑在代码中而不是在配置文件中来配置您的WCF客户端端点。 有关详细信息,请参阅:

http://msdn.microsoft.com/en-us/library/ff647110.aspx