我尝试使用wcf服务,但是从C#调用绑定信息时出现错误。错误是“在配置中未找到与关键字匹配的元素”。
你能帮我吗?
我已经检查过,并且绑定的配置名称与app.config文件中的相同。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WSHttpBinding binding = new WSHttpBinding("bindingconfig name");
EndpointAddress address = new EndpointAddress("endpoint address");
当我尝试调用它时,将引发WSHttpBinding对象绑定形式的异常。
答案 0 :(得分:0)
请使用客户端代理类来调用服务。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/accessing-services-using-a-wcf-client
如下面的代码段。
ServiceReference1.TestServiceClient client = new ServiceReference1.TestServiceClient();
try
{
var result = client.GetResult();
Console.WriteLine(result);
}
catch (Exception)
{
throw;
}
client.Close();
配置(自动生成)。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ITestService" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://10.157.13.69:16666/" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ITestService" contract="ServiceReference1.ITestService"
name="BasicHttpBinding_ITestService" />
</client>
</system.serviceModel>
客户端代理将使用默认的绑定和端点地址。 如果在配置中生成了多个服务端点,则应通过客户端代理的构造函数指定用于通信的服务端点。
ServiceReference1.TestServiceClient client = new ServiceReference1.TestServiceClient(“BasicHttpBinding_ITestService”);
此外,我们还可以使用ChannelFacotry调用该服务,但是它们本质上是相同的。
Uri uri = new Uri("http://10.157.13.69:16666");
BasicHttpBinding binding = new BasicHttpBinding();
ChannelFactory<ICalculator> factory = new ChannelFactory<ICalculator>(binding,new EndpointAddress(uri));
ICalculator service = factory.CreateChannel();
try
{
var result = service.Add(34.32, 2.34);
Console.WriteLine(result);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
throw;
}
}
[ServiceContract]
public interface ICalculator
{
[OperationContract]
double Add(double a, double b);
}
请随时告诉我是否有什么可以帮忙的。