1.url:http://localhost:8002/名称.svc/basic(.svc结尾)

2.需要引用的命名空间System.ServiceModel

3.调用代码:

  1. public class InvokeContext
  2. {
  3.  
  4. #region Wcf服务工厂
  5. public static T CreateWCFServiceByURL<T>(string url)
  6. {
  7. return CreateWCFServiceByURL<T>(url, "basichttpbinding");
  8. }
  9.  
  10. public static T CreateWCFServiceByURL<T>(string url, string bing)
  11. {
  12. if (string.IsNullOrEmpty(url)) throw new NotSupportedException("this url isn`t Null or Empty!");
  13. EndpointAddress address = new EndpointAddress(url);
  14. Binding binding = CreateBinding(bing);
  15. ChannelFactory<T> factory = new ChannelFactory<T>(binding, address);
  16. return factory.CreateChannel();
  17. }
  18. #endregion
  19.  
  20. #region 创建传输协议
  21. /// <summary>
  22. /// 创建传输协议
  23. /// </summary>
  24. /// <param name="binding">传输协议名称</param>
  25. /// <returns></returns>
  26. private static Binding CreateBinding(string binding)
  27. {
  28. Binding bindinginstance = null;
  29. if (binding.ToLower() == "basichttpbinding")
  30. {
  31. BasicHttpBinding ws = new BasicHttpBinding();
  32. ws.MaxBufferSize = ;
  33. ws.MaxBufferPoolSize = ;
  34. ws.MaxReceivedMessageSize = ;
  35. ws.ReaderQuotas.MaxStringContentLength = ;
  36. ws.CloseTimeout = new TimeSpan(, , );
  37. ws.OpenTimeout = new TimeSpan(, , );
  38. ws.ReceiveTimeout = new TimeSpan(, , );
  39. ws.SendTimeout = new TimeSpan(, , );
  40.  
  41. bindinginstance = ws;
  42. }
  43. else if (binding.ToLower() == "netnamedpipebinding")
  44. {
  45. NetNamedPipeBinding ws = new NetNamedPipeBinding();
  46. ws.MaxReceivedMessageSize = ;
  47. bindinginstance = ws;
  48. }
  49. else if (binding.ToLower() == "netpeertcpbinding")
  50. {
  51. NetPeerTcpBinding ws = new NetPeerTcpBinding();
  52. ws.MaxReceivedMessageSize = ;
  53. bindinginstance = ws;
  54. }
  55. else if (binding.ToLower() == "nettcpbinding")
  56. {
  57. NetTcpBinding ws = new NetTcpBinding();
  58. ws.MaxReceivedMessageSize = ;
  59. ws.Security.Mode = SecurityMode.None;
  60. bindinginstance = ws;
  61. }
  62. else if (binding.ToLower() == "wsdualhttpbinding")
  63. {
  64. WSDualHttpBinding ws = new WSDualHttpBinding();
  65. ws.MaxReceivedMessageSize = ;
  66.  
  67. bindinginstance = ws;
  68. }
  69. else if (binding.ToLower() == "webhttpbinding")
  70. {
  71. //WebHttpBinding ws = new WebHttpBinding();
  72. //ws.MaxReceivedMessageSize = 65535000;
  73. //bindinginstance = ws;
  74. }
  75. else if (binding.ToLower() == "wsfederationhttpbinding")
  76. {
  77. WSFederationHttpBinding ws = new WSFederationHttpBinding();
  78. ws.MaxReceivedMessageSize = ;
  79. bindinginstance = ws;
  80. }
  81. else if (binding.ToLower() == "wshttpbinding")
  82. {
  83. WSHttpBinding ws = new WSHttpBinding(SecurityMode.None);
  84. ws.MaxReceivedMessageSize = ;
  85. ws.Security.Message.ClientCredentialType = System.ServiceModel.MessageCredentialType.Windows;
  86. ws.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Windows;
  87. bindinginstance = ws;
  88. }
  89. return bindinginstance;
  90.  
  91. }
  92. #endregion
  93.  
  94. }//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.调用示例

  1. IMatterService dpser = InvokeContext.CreateWCFServiceByURL<IMatterService>("http://localhost:8002/名称.svc/basic");
  2. Dictionary<string, string> dic=dpser.方法名();
  1. IMatterService为生成的方法接口

动态调用wcf接口服务的更多相关文章

  1. C#动态调用WCF接口,两种方式任你选。

    写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项目时用到了WCF. 从这 ...

  2. C#动态调用WCF接口

    C#动态调用WCF接口 写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项 ...

  3. C#动态调用WCF接口(3)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...

  4. C#动态调用WCF接口(2)

    如何使用 1.第一种方式比较简单,而且也是大家喜欢的,因为不需要任何配置文件就可解决,只需知道服务契约接口和服务地址就可以调用. 2.使用Invoke的方式,但是需要在调用客户端配置WCF,配置后在I ...

  5. 动态调用WCF服务

    动态调用WCF服务,只需要提供*.svc地址, 1:命名空间: using System.ServiceModel.Channels;using System.ServiceModel; 2:创建访问 ...

  6. 创建一个简单的WCF程序2——手动开启/关闭WCF服务与动态调用WCF地址

    一.创建WCF服务器 1.创建WCF服务器的窗体应用程序 打开VS2010,选择文件→新建→项目菜单项,在打开的新建项目对话框中,依次选择Visual C#→Windows→Windows窗体应用程序 ...

  7. 动态调用WCF

    最近在做的一个项目中需要动态调用WCF地址,因为有很多终端服务器,而每台终端服务器上都部署一个WCF服务,中央服务器需要不定时调用其中某个或者多个WCF服务执行相关操作,因此添加引用及配置文件配置的方 ...

  8. c# 动态调用WCF方法笔记!

    //动态调用wcf方法 string url = "http://localhost:54379/ServiceWCF.svc"; IDoubleService proxy = W ...

  9. 动态调用WebService接口的几种方式

    一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过 ...

随机推荐

  1. Oracle Rac crs无法启动

    OS:ORACLE LINUX 5.7 DB:11.2.0.3 RAC:YES 故障:1.两节点RAC,节点分别为linuxdb1.linuxdb2,其中节点linuxdb2服务器出现故障,无法启动2 ...

  2. nginx 配置 ThinkPHP Rewrite

    server { listen 80; server_name www.funsion.com; root /www/web/funsion; index index.php; location / ...

  3. java 切换

    Android L之后推荐使用JDK7编译程序,这是自然发展规律,就像是4年前编译Android 1.6需要使用JDK5一样. 多版本JDK是可以共存的,只需要使用update-alternative ...

  4. nodejs base64 编码解码

    普通字符串 编码解码: var b = new Buffer('JavaScript'); var s = b.toString('base64'); // SmF2YVNjcmlwdA== var ...

  5. C++11 常用语法

    1 新类型 C++ 11新增了long long和unsigned long long,以支持64bit宽度: 新增char16_t和char32_t以支持16位和32位字符表示: 增加了“原始”字符 ...

  6. C#判断字符串为空

    string str = null; if (string.IsNullOrWhiteSpace(str)) { MessageBox.Show("字符串为null"); } if ...

  7. Python实现PLA(感知机)

    Python实现PLA(感知机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end o ...

  8. nodejs笔记三--url处理、Query String;

    URL--该模块包含用以 URL 解析的实用函数. 使用 require('url') 来调用该模块. 一.parse函数的基础用法 parse函数的作用是解析url,返回一个json格式的数组,请看 ...

  9. C#预编译指令

    近日工作涉及到于外部系统交互,对方提供接口:但是在双方系统未联调时,引用外部DLL,相关类实例化,提示异常错误(错误消息正常):后面操作无法进行,那如何写调试代码,即在调试时不运行某段代码,而在正式发 ...

  10. Google Guava学习笔记——基础工具类Joiner的使用

    Guava 中有一些基础的工具类,如下所列: 1,Joiner 类:根据给定的分隔符把字符串连接到一起.MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value. 2,Spli ...