博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态调用WCF服务
阅读量:6259 次
发布时间:2019-06-22

本文共 1122 字,大约阅读时间需要 3 分钟。

本文转载:

原文地址:

 

客户端调用wcf ,有时需要动态的调用服务端的WCF中的方法,本方法,反射wcf 的接口,动态调用接口中的方法。

主要为,动态绑定,反射动态调用。

 

public static object ExecuteMethod<T>(string pUrl,string pMethodName, params object[] pParams)  
{  
    EndpointAddress address = new EndpointAddress(pUrl);  
    Binding bindinginstance = null;  
    NetTcpBinding ws = new NetTcpBinding();  
    ws.MaxReceivedMessageSize = 20971520;  
    ws.Security.Mode = SecurityMode.None;  
    bindinginstance = ws;  
    using (ChannelFactory<T> channel = new ChannelFactory<T>(bindinginstance,address))  
    {  
        T instance = channel.CreateChannel();  
        using (instance as IDisposable)  
        {  
            try  
            {  
                Type type = typeof(T);  
                MethodInfo mi = type.GetMethod(pMethodName);  
                return mi.Invoke(instance, pParams);  
            }  
            catch (TimeoutException)  
            {  
                (instance as ICommunicationObject).Abort();  
                throw;  
            }  
            catch (CommunicationException)  
            {  
                (instance as ICommunicationObject).Abort();  
                throw;  
            }  
            catch (Exception vErr)  
            {  
                (instance as ICommunicationObject).Abort();  
                throw;  
            }  
        }  
    }  
}  

 

本文使用的是nettcpbinding 绑定方式,可修改。

调用方法使用

ExecuteMethod<IService>("net.tcp://192.168.0.1:8001/mex", "Test", new object[] { "参数" })

 

 

另外还有一篇贴子可参考:

转载于:https://www.cnblogs.com/zhangchenliang/p/6795267.html

你可能感兴趣的文章
SQL数据库学习之路(一)
查看>>
Prometheus监控实践:Kubernetes集群监控
查看>>
创建表格存储(Table Store)结果表
查看>>
网站301跳转
查看>>
Android 权限管理
查看>>
Django配置MySQL数据库及采坑记
查看>>
关于DialogFragment全屏方案
查看>>
WPF中查看PDF文件
查看>>
旷视科技 CSG 算法负责人姚聪:深度学习时代的文字检测与识别技术 | AI 研习社 103 期大讲堂...
查看>>
构建docker镜像
查看>>
《未来简史》读后感
查看>>
Flink靠什么征服饿了么工程师?
查看>>
VB VBA VBS有什么区别?
查看>>
CSS3 box-shadow
查看>>
手机 APP 无法连接服务器,DNS被篡改被劫持?
查看>>
Jboot 2.0.1 发布,新增基于 Fescar 的分布式事务支持
查看>>
使用RNA-seq数据通过网络熵评估肿瘤内异质性
查看>>
Scrapy基础——Spider
查看>>
Airbnb 宣布放弃使用 React Native,回归使用原生技术
查看>>
PyCharm for Mac快捷键小记
查看>>