c# 利用svcutil.exe 后端调用 WCF

1. 在visual studio安装目录下找到 Visual Studio Tools

2. 以管理员身份运行 “VS2013 x64 兼容工具命令提示” (如果安装的32位VS,运行 x86的)

3. 执行命令(在服务地址后加上 ?wsdl):svcutil.exe http://localhost:8091/PatientService.svc?wsdl

4. 可以看到生成了两个文件

5. 根据目录找到这个文件,将.cs文件拷贝到项目中

6. 新建WcfChannelFactory类

 1 public static class WcfChannelFactory
 2     {
 3         #region WCF服务工厂
 4         public static T CreateServiceByUrl<T>(string url)
 5        {
 6            return CreateServiceByUrl<T>(url, "basicHttpBinding");
 7        }
 8
 9        public static T CreateServiceByUrl<T>(string url, string bing)
10        {
11            try
12            {
13                if (string.IsNullOrEmpty(url)) throw new NotSupportedException("This url is not Null or Empty!");
14                EndpointAddress address = new EndpointAddress(url);
15                Binding binding = CreateBinding(bing);
16                ChannelFactory<T> factory = new ChannelFactory<T>(binding, address);
17                return factory.CreateChannel();
18            }
19            catch (Exception ex)
20            {
21                throw new Exception("创建服务工厂出现异常.");
22            }
23        }
24        #endregion
25
26        #region 创建传输协议
27        /// <summary>
28        /// 创建传输协议
29        /// </summary>
30        /// <param name="binding">传输协议名称</param>
31        /// <returns></returns>
32        private static Binding CreateBinding(string binding)
33        {
34            Binding bindinginstance = null;
35            if (binding.ToLower() == "basichttpbinding")
36            {
37                BasicHttpBinding ws = new BasicHttpBinding();
38                ws.MaxBufferSize = 2147483647;
39                ws.MaxBufferPoolSize = 2147483647;
40                ws.MaxReceivedMessageSize = 2147483647;
41                ws.ReaderQuotas.MaxStringContentLength = 2147483647;
42                ws.CloseTimeout = new TimeSpan(0, 30, 0);
43                ws.OpenTimeout = new TimeSpan(0, 30, 0);
44                ws.ReceiveTimeout = new TimeSpan(0, 30, 0);
45                ws.SendTimeout = new TimeSpan(0, 30, 0);
46
47                bindinginstance = ws;
48            }
49            else if (binding.ToLower() == "nettcpbinding")
50            {
51                NetTcpBinding ws = new NetTcpBinding();
52                ws.MaxReceivedMessageSize = 65535000;
53                ws.Security.Mode = SecurityMode.None;
54                bindinginstance = ws;
55            }
56            else if (binding.ToLower() == "wshttpbinding")
57            {
58                WSHttpBinding ws = new WSHttpBinding(SecurityMode.None);
59                ws.MaxReceivedMessageSize = 65535000;
60                ws.Security.Message.ClientCredentialType = System.ServiceModel.MessageCredentialType.Windows;
61                ws.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Windows;
62                bindinginstance = ws;
63            }
64            return bindinginstance;
65
66        }
67        #endregion
68     }  

7. 用法:

string url = "http://localhost:9090/PatientService.svc";//WebConfig.WCFServiceUrl;
IPatientService proxy = WcfChannelFactory.CreateServiceByUrl<IPatientService>(url);
string getdata = proxy.GetData(123);
IPatientService为自动生成的cs文件中的接口,其中包含了wcf服务中的方法
时间: 2024-11-13 10:02:34

c# 利用svcutil.exe 后端调用 WCF的相关文章

使用powershell通过配置文件config调用wcf(含用户名密码认证)

1.环境设定 工作目录: D:\workspace\  (目录可随意) 需要的应用程序: SvcUtil.exe(解析wcf的url生成cs和config文件的工具)来源:有vs.net的PC的C盘中搜索出来,复制到D:\workspace\中. csc.exe(通过cs文件生成dll的工具)来源:C盘中搜索出来,不复制. 需要的DLL: System.ServiceModel.dll  来源:有framework的PC的C盘中搜索出来(版本号要和SvcUtil.exe生成的cs文件需要的一致)

WCF通过SVCUtil.exe生成客户端代理类和配置文件(转)

WCF服务调用通过两种常用的方式: 1:一种是借助代码生成工具SvcUtil.exe或者添加服务引用的方式. 2:一种是通过ChannelFactory直接创建服务代理对象进行服务调用. 本文只针对通过SvcUtil.exe工具生成代理类和对应配置文件来讲 一:通过cmd命令行生成代理类和对应配置文件 1.找到如下地址“C:\Windows\System32\cmd.exe”  命令行工具,右键以管理员身份运行(视系统是否为win7 而定) 2.输入如下命令: C:\>cd C:\Program

快速创建WCF服务和svcutil.exe工具使用

先简单的创建WCF服务: 系统会自动加上IService1接口 和 Service1 实现类 分别在IService1 和Service1 加上2段代码. 1 [ServiceContract] 2 public interface IService1 3 { 4 [OperationContract] 5 string HelloWorld(); 6 7 [OperationContract] 8 string GetData(int value); 9 10 [OperationContra

关于wcf三大工具的使用(wsdl.exe svcutil.exe disco.exe)

首先,我们必须创建一个wcf服务.并部署到IIS中.这里我已经将一个StudentService服务部署到我自己的电脑了. (1)svcutil.exe svcutil.exe工具的作用是通过服务地址生成代理类和配置文件. 1.开始--->Microsoft Visual Studio 2010--->Visual Studio Tools--->打开 Visual Studio 命令提示符(2010) 2.输入:svcutil.exe http://localhost:3721/Stu

使用svcutil.exe 工具来生成调用文件

svcutil.exe http://localhost:9065/ServiceDemo.svc?wsdl 这将生成一个配置文件和一个包含客户端类的代码文件. 下面我们就用这个是怎么生成的: 1,打开Visual Studio命令提示(Visual Studio Tools下面) 2,在打开的界面里面输入svcutil.exe http://localhost:9065/ServiceDemo.svc?wsdl 即可 截图如下:

WCF 使用SvcUtil.exe生成客户端代码和配置

引用地址:http://www.cnblogs.com/iamlilinfeng/p/4083827.html SvcUtil.exe是一个VS命令行工具,该工具位于:C:\Program Files\Microsoft  SDKs\Windows\v7.0A\bin 或 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\一般情况下我们将SvcUtil.exe添加到VS开发工具中方便以后的运用(也可直接使用该命令行工具). 1)在VS

在net.tcp模式下,由SvcUtil.exe生成代理类文件和配置文件(转)

WCF服务调用可以采用两个方法,由工具SvcUtil.exe生成本地代理服务类和配置文件方式,或者采用ChannelFactory直接创建服务代理对象.本文主要采用前面一种方式来进行. SvcUtil.exe位于:C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin目录下,可以将本工具添加到VS2010的工具菜单中,以方便使用: VS菜单->工具->外部工具->添加->在“命令”文本框选取其路径如下:C:\Program Files\M

WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]

原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码和配置:通过ChannelFactory<TChannel>创建服务代理对象.在这篇文章中,我们采用一种独特的方式进行服务的调用.从本质上讲,我们只要能够创建于服务端相匹配的终结点,就能够实现正常的服务调用.在WCF客户端元数据架构体系中,利用MetadataExchangeClient可以获取服

ServiceModel 元数据实用工具 (Svcutil.exe)

ServiceModel 元数据实用工具用于依据元数据文档生成服务模型代码,以及依据服务模型代码生成元数据文档 一.SvcUtil.exe ServiceModel 元数据实用工具可在 Windows SDK 安装位置中找到,具体位置为 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin 功能 下表概括了此工具提供的各种功能,以及论述如何使用该工具的对应主题. 任务 主题 依据运行的服务或静态元数据文档生成代码 根据服务元数据生成 WCF 客户端 从