[转]使用代码去描述WCF配置文件

转自:使用代码去描述WCF配置文件

在应用程序部署的时候,WCF客户端因为服务器地址的变化,需要修改程序配置文件的地址URL,手动修改很不方便,还会造成错误,所以尽量把描述WCF配置文件的配置使用代码方式进行描述,通过在软件中输入服务器IP地址的方式,动态修改访问的URL,这样比较方便,也不会出错,导致程序运行异常。

下面我将一个WCF部署文件采用代码方式描述:

WCF客户端的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="WSHttpBinding_IMainService" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                    allowCookies="false">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Message">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Windows" negotiateServiceCredential="true"
                            algorithmSuite="Default" establishSecurityContext="true" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:8888/DataCenter.Factory/MainService/"
                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMainService"
                contract="IMainService" name="WSHttpBinding_IMainService">
                <identity>
                    <servicePrincipalName value="host/WIN-QFIKKT28EHC" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>

编程中使用代码描述上述文件:在这里客户端引用的WCF服务命名空间定义为DataCenterFatoryC,客户端访问对象为  DataCenterFatoryC.MainServiceClient MainServiceClient1;

   using System.ServiceModel;  

   WSHttpBinding Bindins;  

   DataCenterFatoryC.MainServiceClient MainServiceClient1;  

   private void MainForm_Load(object sender, EventArgs e)
   {
        Bindins = new WSHttpBinding();//设置绑定
        Bindins.CloseTimeout = TimeSpan.Parse("00:01:00");
        Bindins.OpenTimeout = TimeSpan.Parse("00:01:00");
        Bindins.ReceiveTimeout = TimeSpan.Parse("00:10:00");
        Bindins.SendTimeout = TimeSpan.Parse("00:01:00");
        Bindins.BypassProxyOnLocal = false;
        Bindins.TransactionFlow = false;
        Bindins.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
        Bindins.MaxBufferPoolSize = 524288;
        Bindins.MaxReceivedMessageSize = 65535;
        Bindins.MessageEncoding = WSMessageEncoding.Text;
        Bindins.TextEncoding = Encoding.UTF8;
        Bindins.UseDefaultWebProxy = true;
        Bindins.ReaderQuotas.MaxDepth = 32;
        Bindins.ReaderQuotas.MaxStringContentLength = 8192;
        Bindins.ReaderQuotas.MaxArrayLength = 16383;
        Bindins.ReaderQuotas.MaxBytesPerRead = 4096;
        Bindins.ReaderQuotas.MaxNameTableCharCount = 16384;
        Bindins.ReliableSession.Ordered = true;
        Bindins.ReliableSession.InactivityTimeout = TimeSpan.Parse("00:10:00");
        Bindins.ReliableSession.Enabled = false;
        Bindins.Security.Mode = SecurityMode.Message;
        Bindins.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
        Bindins.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
        Bindins.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
        Bindins.Security.Message.NegotiateServiceCredential = true;
        Bindins.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default;
        Bindins.Security.Message.EstablishSecurityContext = true; 

        string address = "http://localhost:8888/DataCenter.Factory/MainService/";//服务终结点的URL
        MainServiceClient1 = new DataCenterFatoryC.MainServiceClient(Bindins, new EndpointAddress(address));
        MainServiceClient1.Open();
    }

通过对Bindins的参数设置,能有效的描述访问过程的一些问题,比如上传下载大文件,大数据表都依赖重要参数的设置,否则运行中会有异常错误发生,这是我们应该注意的。

时间: 2024-10-05 14:17:21

[转]使用代码去描述WCF配置文件的相关文章

概览 Windows Communication Foundation (WCF) 体系结构及其主要概念。代码示例演示 WCF 约定、终结点和行为

摘要:概览 Windows Communication Foundation (WCF) 体系结构及其主要概念.代码示例演示 WCF 约定.终结点和行为. 本页内容 简介 WCF 基础 代码示例 小结 简介 本文档提供 Windows Communication Foundation (WCF) 体系结构的概览.本文旨在阐释 WCF 中的主要概念以及它们如何协调工作.还有几个代码示例对这些概念进行深入阐释,但代码不是本文档的重点. 本文档下面的部分分为以下两个主要内容: WCF 基础:涵盖 WC

WCF配置文件详解 【转】

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

自己写的代码去空行器

import java.io.*; public class RemoveEmp3{ public static void readwrite(String filePath)throws IOException{ FileInputStream finput = new FileInputStream(filePath); InputStreamReader isr = new InputStreamReader(finput); BufferedReader br = new Buffere

通过纯代码方式发布WCF服务

网络上搜索WCF服务,一般是寄宿在IIS,通过WebConfig方式配服务地址,接口类型等信息,但是对于我这样的懒人,目前项目在开发阶段,实在不愿意每次添加新服务就更新配置文件,于是使用了反射来加载服务接口,并用控制台程序发布服务,贴上代码如下. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.

WCF配置文件详解

今天来看看WCF的配置方法. 上图整理了服务配置过程中所用到的基本的元素,大致的步骤主要是首先要在调用服务的程序集中添加服务的一个引用,然后添加一个service并指定服务的名称.终结点,如果添加了behavior(行为)的配置,那么也需要添加一个behaviorConfiguration的配置信息.在添加一个service时会在其中指定终结点的信息,终结点说的就是服务的具体信息访问方式,在终结点中添加服务address及binding信息和contract(服务契约)信息等.在endpoint

微软 BI ssis 中的 script task中用代码直接调用 WCF / Webservice

背景: 在普通的C#项目中,可以直接调用 WCF / Webservice: 在微软BI的 ssis中,有 webservice任务组件,也可以直接调用简单的 WCF / Webservice; 偶这边的情况是,后端的 WCF中用的反射,所以在 ssis中的webservice任务组件中,死活不能识别 WCF对应的方法. 所以只能在ssis的 script task组件中,用纯代码的方式来调用WCF服务. 就这样,可能还是有问题:可能会碰到 不能识别 System.ServiceModel节点的

WCF配置文件

WCF的配置文件共分为两部分:服务端配置与客户端配置.两者由于功能的不同,在配置文件的使用上也略有不同. 1.WCF的服务端配置 服务端的配置文件主要包括endpoint.binding.behavior的配置.一个标准的服务端配置文件所包含的主要xml配置节如下所示: <?xmlversion="1.0"encoding="utf-8"?> <configuration> <system.serviceModel> <!-

wcf 配置文件

服务和行为是并列的 对应到配置文件中  wcf的配置在system.serviceModel中 可以有多个服务 一个服务会有一个主机以及多个终结点 主机包含多个基址 baseAddress 终结点,由三部分组成  地址,绑定,契约   Address,Binding,Contract 行为可以包含多种,目前只用服务行为 务必注意下图中的HttpsEnabled设置为true是错误的,正确的设置,应该和Host中的baseAddress匹配,设置HttpEnabled属性为true Http和Ht

阿里云ECS安装的redis服务器,用java代码去连接报错。

import redis.clients.jedis.Jedis; /** * Hello world! * */ public class App { public static void main( String[] args ) { Jedis jedis = new Jedis("47.254.29.200",6379); //jedis.auth("123456"); System.out.println("连接成功"); //查看服务