wcf - 如何从 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)
{
}
解决方案
如果我们想通过添加服务引用来消费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 服务。
使用简单的 HttpClient 类使用 WCF 服务
但是如果我们想通过添加服务引用来消费WCF的restful服务,我们应该保持客户端和服务器之间绑定的一致性。我们应该在服务接口的自动生成方法中添加[WebGet]/[WebInvoke],它以添加服务引用的形式出现,位于Reference.cs文件中。
我们需要做的另一件事是将 Webhttpbehavior(端点行为)添加到客户端服务端点。此客户端配置以添加服务引用的形式出现,位于 app.config/web.config 的 System.ServiceModel 部分。
远程服务器返回意外响应:(400) 错误请求。wcf
如果有什么我可以帮忙的,请随时告诉我。
推荐阅读
- java - 有没有办法让Java调用一个调用javac和java的bash脚本?
- asp.net - webforms依赖注入CS7036:没有给出与所需形式参数相对应的参数
- c++ - 是否可以通过引用传递的参数返回引用?
- python-3.x - 使用 task.forget() 时 Redis 内存使用量继续攀升
- laravel - 如何从关系模型中检索隐藏属性
- java - 在单击按钮时创建的项目在 JFrame 中不可见
- python - 尽管加载了最佳权重,但 EarlyStopping 并未停止模型
- logistic-regression - scikit-learn 和 dask-ml LogisticRegression 的不同结果
- deep-learning - 点云数据集的归一化(特征缩放)
- grep - 为什么 grep 返回部分匹配列表,然后退出,将文件的其余部分视为二进制文件?