动态调用wcf接口服务
1.url:http://localhost:8002/名称.svc/basic(.svc结尾)
2.需要引用的命名空间System.ServiceModel
3.调用代码:
- public class InvokeContext
- {
- #region Wcf服务工厂
- public static T CreateWCFServiceByURL<T>(string url)
- {
- return CreateWCFServiceByURL<T>(url, "basichttpbinding");
- }
- public static T CreateWCFServiceByURL<T>(string url, string bing)
- {
- if (string.IsNullOrEmpty(url)) throw new NotSupportedException("this url isn`t Null or Empty!");
- EndpointAddress address = new EndpointAddress(url);
- Binding binding = CreateBinding(bing);
- ChannelFactory<T> factory = new ChannelFactory<T>(binding, address);
- return factory.CreateChannel();
- }
- #endregion
- #region 创建传输协议
- /// <summary>
- /// 创建传输协议
- /// </summary>
- /// <param name="binding">传输协议名称</param>
- /// <returns></returns>
- private static Binding CreateBinding(string binding)
- {
- Binding bindinginstance = null;
- if (binding.ToLower() == "basichttpbinding")
- {
- BasicHttpBinding ws = new BasicHttpBinding();
- ws.MaxBufferSize = ;
- ws.MaxBufferPoolSize = ;
- ws.MaxReceivedMessageSize = ;
- ws.ReaderQuotas.MaxStringContentLength = ;
- ws.CloseTimeout = new TimeSpan(, , );
- ws.OpenTimeout = new TimeSpan(, , );
- ws.ReceiveTimeout = new TimeSpan(, , );
- ws.SendTimeout = new TimeSpan(, , );
- bindinginstance = ws;
- }
- else if (binding.ToLower() == "netnamedpipebinding")
- {
- NetNamedPipeBinding ws = new NetNamedPipeBinding();
- ws.MaxReceivedMessageSize = ;
- bindinginstance = ws;
- }
- else if (binding.ToLower() == "netpeertcpbinding")
- {
- NetPeerTcpBinding ws = new NetPeerTcpBinding();
- ws.MaxReceivedMessageSize = ;
- bindinginstance = ws;
- }
- else if (binding.ToLower() == "nettcpbinding")
- {
- NetTcpBinding ws = new NetTcpBinding();
- ws.MaxReceivedMessageSize = ;
- ws.Security.Mode = SecurityMode.None;
- bindinginstance = ws;
- }
- else if (binding.ToLower() == "wsdualhttpbinding")
- {
- WSDualHttpBinding ws = new WSDualHttpBinding();
- ws.MaxReceivedMessageSize = ;
- bindinginstance = ws;
- }
- else if (binding.ToLower() == "webhttpbinding")
- {
- //WebHttpBinding ws = new WebHttpBinding();
- //ws.MaxReceivedMessageSize = 65535000;
- //bindinginstance = ws;
- }
- else if (binding.ToLower() == "wsfederationhttpbinding")
- {
- WSFederationHttpBinding ws = new WSFederationHttpBinding();
- ws.MaxReceivedMessageSize = ;
- bindinginstance = ws;
- }
- else if (binding.ToLower() == "wshttpbinding")
- {
- WSHttpBinding ws = new WSHttpBinding(SecurityMode.None);
- ws.MaxReceivedMessageSize = ;
- ws.Security.Message.ClientCredentialType = System.ServiceModel.MessageCredentialType.Windows;
- ws.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Windows;
- bindinginstance = ws;
- }
- return bindinginstance;
- }
- #endregion
- }//end
4.动态调用方法接口的生成
vs工具-》外部工具-》添加
标题:SvcUtil
命令:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\SvcUtil.exe
初始目录:$(SolutionDir)
勾选:提示输入参数
取消勾选:退出时关闭
确定
5.生成方法接口
工具-》SvcUtil
会生成一个cs文件和一个config文件
6.调用示例
- IMatterService dpser = InvokeContext.CreateWCFServiceByURL<IMatterService>("http://localhost:8002/名称.svc/basic");
- Dictionary<string, string> dic=dpser.方法名();
- IMatterService为生成的方法接口
动态调用wcf接口服务的更多相关文章
- C#动态调用WCF接口,两种方式任你选。
写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项目时用到了WCF. 从这 ...
- C#动态调用WCF接口
C#动态调用WCF接口 写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项 ...
- C#动态调用WCF接口(3)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...
- C#动态调用WCF接口(2)
如何使用 1.第一种方式比较简单,而且也是大家喜欢的,因为不需要任何配置文件就可解决,只需知道服务契约接口和服务地址就可以调用. 2.使用Invoke的方式,但是需要在调用客户端配置WCF,配置后在I ...
- 动态调用WCF服务
动态调用WCF服务,只需要提供*.svc地址, 1:命名空间: using System.ServiceModel.Channels;using System.ServiceModel; 2:创建访问 ...
- 创建一个简单的WCF程序2——手动开启/关闭WCF服务与动态调用WCF地址
一.创建WCF服务器 1.创建WCF服务器的窗体应用程序 打开VS2010,选择文件→新建→项目菜单项,在打开的新建项目对话框中,依次选择Visual C#→Windows→Windows窗体应用程序 ...
- 动态调用WCF
最近在做的一个项目中需要动态调用WCF地址,因为有很多终端服务器,而每台终端服务器上都部署一个WCF服务,中央服务器需要不定时调用其中某个或者多个WCF服务执行相关操作,因此添加引用及配置文件配置的方 ...
- c# 动态调用WCF方法笔记!
//动态调用wcf方法 string url = "http://localhost:54379/ServiceWCF.svc"; IDoubleService proxy = W ...
- 动态调用WebService接口的几种方式
一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过 ...
随机推荐
- Oracle Rac crs无法启动
OS:ORACLE LINUX 5.7 DB:11.2.0.3 RAC:YES 故障:1.两节点RAC,节点分别为linuxdb1.linuxdb2,其中节点linuxdb2服务器出现故障,无法启动2 ...
- nginx 配置 ThinkPHP Rewrite
server { listen 80; server_name www.funsion.com; root /www/web/funsion; index index.php; location / ...
- java 切换
Android L之后推荐使用JDK7编译程序,这是自然发展规律,就像是4年前编译Android 1.6需要使用JDK5一样. 多版本JDK是可以共存的,只需要使用update-alternative ...
- nodejs base64 编码解码
普通字符串 编码解码: var b = new Buffer('JavaScript'); var s = b.toString('base64'); // SmF2YVNjcmlwdA== var ...
- C++11 常用语法
1 新类型 C++ 11新增了long long和unsigned long long,以支持64bit宽度: 新增char16_t和char32_t以支持16位和32位字符表示: 增加了“原始”字符 ...
- C#判断字符串为空
string str = null; if (string.IsNullOrWhiteSpace(str)) { MessageBox.Show("字符串为null"); } if ...
- Python实现PLA(感知机)
Python实现PLA(感知机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end o ...
- nodejs笔记三--url处理、Query String;
URL--该模块包含用以 URL 解析的实用函数. 使用 require('url') 来调用该模块. 一.parse函数的基础用法 parse函数的作用是解析url,返回一个json格式的数组,请看 ...
- C#预编译指令
近日工作涉及到于外部系统交互,对方提供接口:但是在双方系统未联调时,引用外部DLL,相关类实例化,提示异常错误(错误消息正常):后面操作无法进行,那如何写调试代码,即在调试时不运行某段代码,而在正式发 ...
- Google Guava学习笔记——基础工具类Joiner的使用
Guava 中有一些基础的工具类,如下所列: 1,Joiner 类:根据给定的分隔符把字符串连接到一起.MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value. 2,Spli ...