c# - 如何通过服务通道调用服务
问题描述
我正在尝试通过服务渠道调用服务。我的BeginGet()
电话工作正常,但EndGet()
出现如下铸造错误。有人可以告诉我我做错了什么吗?
错误:无法将“Service.AddressServiceClient”类型的对象转换为“ServiceClient`1[IAddressServiceChannel]”类型。
我的代码:
public IAsyncResult BeginGet(long id)
{
var service = GetClient();
IAsyncResult handle = service.BeginGetAddress(id);
return handle;
}
private Service.AddressServiceClient GetClient()
{
var client = new Service.AddressServiceClient();
client.Endpoint.EndpointBehaviors.Clear();
client.Endpoint.EndpointBehaviors.Add(SetCred()); // setting custom credentials
return client;
}
public EndGet(IAsyncResult handle)
{
handle.AsyncWaitHandle.WaitOne();
//ServiceClient is a class which implements IDisposable
***// getting runtime exception at following line***
using (var channel = (ServiceClient<Service.IServiceChannel>)handle.AsyncState)
{
return channel.Client.EndGetAddress(handle)
}
}
我确实尝试进行EndGet()
如下更改,但出现编译错误:
public EndGet(IAsyncResult handle)
{
handle.AsyncWaitHandle.WaitOne();
***// get compilation error AddressServiceClient is a type, which is not valid in given context***
using (var channel = <Service.AddressServiceClient> handle.AsyncState)
{
return channel.Client.EndGetAddress(handle)
}
}
解决方案
推荐阅读
- angular - 我在路由方面遇到问题,Angular 在单击链接之前显示组件
- node.js - 如何修复登录错误:在护照 js 中登录此应用程序时出现错误?
- node.js - MERN 堆栈 webapp 显示空白屏幕 Android 移动浏览器,作为 React-Redux 前端,Node-Express 后端
- javascript - 更新对象数组中的单个对象键值反应 redux 状态
- puppet - 使用 Puppet 为 Debian 设置存储库
- symfony - 是否可以在 Symfony 4 中使用没有 AppBundle 的 ongr-elasticsearch 包?
- sql-server - 将字段从 nVarchar 转换为 Numeric,用于多行性能的 sql 函数
- c - 如何使我的代码独立于“RTOS”?
- wordpress - 用于 Wordpress 的 Gutenburg 组件的标准编辑器样式
- phpmyadmin - 无法连接到远程数据库