如何识别二进制文件(.dll)尝试从哪个位置读取其端点信息?

问题描述 投票:0回答:1

我正在使用一个名为

ServiceRef.dll
的类库,其中包含 WCF 服务引用。该库在我们应用程序的各个部分中使用,例如 Web 应用程序和其他类库。它包含 WCF 服务必需的
<bindings>
<client endpoints>

对于 Web 应用程序,我们已将所需的

<bindings>
<client endpoints>
添加到
Web.config
文件中。同样,对于引用
ServiceRef.dll
的其他类库,我们在各自的
app.config
文件中包含相同的配置(例如,
abc.dll.config
代表
abc.dll
)。

虽然 IIS 上托管的 Web 应用程序可以使用 Web.config 中的端点信息成功调用 WCF 服务,但尝试从控制台库执行相同操作会导致以下错误:

“找不到引用合约的默认端点元素 ServiceModel 客户端配置部分中的“Service.IService”。 这可能是因为没有找到您的配置文件 应用程序,或者因为没有与此合同匹配的端点元素 可以在客户端元素中找到。”

尽管尝试了各种配置并将端点信息添加到不同类库的多个配置文件中,问题仍然存在。

我无法确定二进制文件尝试读取哪个配置文件来获取端点信息。在处理具有多个配置文件的类库时,有没有办法跟踪二进制文件如何读取其配置/端点信息?可以通过 Fusion log、Event Viewer 或 IIS 日志等工具记录或捕获此过程吗?

有关此事的任何指导将不胜感激。

c# wcf
1个回答
0
投票

首先我想说的是,Web应用程序项目是一个web.config文件。控制台项目是一个app.config 文件。你的问题中缺少的东西应该是这样的:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService1" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:50833/Service1.svc" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
        name="BasicHttpBinding_IService1" />
    </client>
  </system.serviceModel>

我建议您检查您的app.config文件,看看是否有上述代码,您可以从您的Web应用程序项目的web.config文件中复制该代码。

© www.soinside.com 2019 - 2024. All rights reserved.