无法在WCF客户端中找到默认端点元素....

时间:2010-06-04 01:13:44

标签: c# winforms wcf

我在引用合同程序集的服务解决方案中创建了一个代理库类,并将库(合同,代理)复制到另一个解决方案文件夹。然后引用另一个类库中的Proxy,Contract和System.ServiceModel库,其中我需要使用包含的一个方法,以及在库中添加App.Config。

服务托管在Windows窗体应用程序中。客户端是从Windows窗体应用程序调用的类库。我没有在Windows窗体项目中创建App.Config。事实上,Windows窗体项目在库中加载控件,控件加载我需要使用服务方法的库。所以我认为我应该只参考最新组件中的(合同和代理),因为我不会在其他任何地方使用它。

但我一直收到这个错误:

  

无法找到默认端点   引用合同的元素   'Sign.Contracts.ISignDocument'中   ServiceModel客户端配置   部分。这可能是因为没有   找到了您的配置文件   应用程序,或因为没有端点   匹配此合同的元素可以   可以在客户端元素中找到。

在libray中调用代理的App.Config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <client>
        <endpoint
          address="http://localhost:8731/SignHere"
          binding="basicHttpBinding"
          contract="Sign.Contracts.ISignDocument" />
      </client>
    </services>
  </system.serviceModel>
</configuration>

服务主持人App.Config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Sign.Service.SignDocumentService">
        <endpoint 
          address="http://localhost:8731/SignHere" 
          binding="basicHttpBinding" 
          contract="Sign.Contracts.ISignDocument" />
      </service>
    </services>
  </system.serviceModel>
</configuration>

代理类:

namespace Sign.Proxies
{
    public class Proxy : ClientBase<ISignDocument>, ISignDocument
    {
        public string SignDocument(string document)
        {
            return Channel.SignDocument(document);
        }
    }
}

合同类:

namespace Sign.Contracts
{
    [ServiceContract]
    public interface ISignDocument
    {
        [OperationContract]
        string SignDocument(string document);
    }
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

任何程序只有一个配置文件。在您的情况下,这是Winforms程序的app.config,在构建程序时会被复制到programName.exe.config。

任何WCF配置都必须在该文件中。您的库具有app.config这一事实无关紧要。您需要从库的app.config中复制相关的配置条目,并将它们与Winforms应用程序的app.config合并。

答案 1 :(得分:1)

doooh ...客户端app.config中的客户端端点信息没有父元素。