如何传递参数并从WCF服务获取数据

时间:2019-06-10 05:33:35

标签: wcf

我收到此错误:

  

http://vkalra.in/WCF_SERVICE/RestServiceImpl.svc上没有端点可以接受该消息。这通常是由不正确的地址或SOAP操作引起的。有关更多详细信息,请参见InnerException(如果存在)
  InnerException-远程服务器返回错误:(404)未找到。

这是我的代码:

Binding binding = new BasicHttpBinding();

// Create endpointAddress of the Service
EndpointAddress endpointAddress = new  EndpointAddress("http://vkalra.in/WCF_SERVICE/RestServiceImpl.svc");

ServiceReference1.Leave_Details emp = new ServiceReference1.Leave_Details();
emp.empid = items.empid;
emp.fromdate = "01-04-2019";
emp.todate = "04-06-2019";
emp.tabt = "1";
emp.jdis = "0";

try
{
    ServiceReference1.RestServiceImplClient service = new ServiceReference1.RestServiceImplClient(binding, endpointAddress);
    string levbal = service.Leave_Calculation(emp);
}
catch(Exception ex)
{
}

1 个答案:

答案 0 :(得分:0)

如果要通过添加服务引用来使用由WebHttpBinding创建的WCF服务(这种WCF服务的类型也称为Restful服务),则需要做一些特殊的事情。一般而言,如果我们要调用Restful服务(例如由Asp.net WebAPI创建的服务),则可以构造一个HTTP请求(带有请求正文的Get或Post),然后将其发送到指定的服务地址。
https://code-maze.com/different-ways-consume-restful-api-csharp/
https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client
这也适用于由WebHttpBinding创建的WCF服务。
consuming a WCF service using simple HttpClient class
但是,如果我们想通过添加服务引用来使用WCF静态服务,则应该保持客户端和服务器之间绑定的一致性。我们应该将[WebGet] / [WebInvoke]添加到服务接口的自动生成的方法中,该方法以添加服务引用的形式出现,位于Reference.cs文件中。
我们需要做的另一件事是将Webhttpbehavior(端点行为)添加到客户端服务端点。此客户端配置以添加服务引用的形式出现,位于app.config / web.config的System.ServiceModel部分。
The remote server returned an unexpected response: (400) Bad Request. wcf
随时让我知道是否有什么可以帮助您的。