我在引用合同程序集的服务解决方案中创建了一个代理库类,并将库(合同,代理)复制到另一个解决方案文件夹。然后引用另一个类库中的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);
}
}
有什么想法吗?
答案 0 :(得分:1)
任何程序只有一个配置文件。在您的情况下,这是Winforms程序的app.config,在构建程序时会被复制到programName.exe.config。
任何WCF配置都必须在该文件中。您的库具有app.config这一事实无关紧要。您需要从库的app.config中复制相关的配置条目,并将它们与Winforms应用程序的app.config合并。
答案 1 :(得分:1)
doooh ...客户端app.config中的客户端端点信息没有父元素。