wcf客户端通过URL地址调用服务器端地址

如果想让服务器端地址以URL的形式提供给外部调用,也就是在IE地址栏中输入URL可看见。可以采用如下方式

在服务器端的配置文件中添加源数据地址配置,在serviceBehaviors中添加

<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8003/WCFServicImp.CityImp/metadata" />

 

服务器端配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <system.serviceModel>
      <!---->
    <services>
      <service name="WCFServicImp.CityImp" behaviorConfiguration="LMSbehavior" >
        <endpoint address="http://localhost:8003/WCFServicImp.CityImp" contract="WCFService.ICity"  bindingConfiguration="testbind" binding="wsHttpBinding"></endpoint>
      </service>
      
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="LMSbehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8003/WCFServicImp.CityImp/metadata" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceThrottling maxConcurrentCalls="200" maxConcurrentInstances="200" maxConcurrentSessions="200"/>
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
        
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="testbind"  openTimeout="00:10:00" receiveTimeout="00:10:00" closeTimeout="10:10:00"
            sendTimeout="00:10:00"  maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="64" maxStringContentLength="2147483647"
					  maxArrayLength="2147483647" />
          
        </binding>
       
      </wsHttpBinding>
    </bindings>
    
  </system.serviceModel>
</configuration>


 

 

服务器端代码

 

  private void button1_Click(object sender, EventArgs e)
        {

            //Type svcType = Type.GetType("WCFServicImp.CityImp,WCFServicImp");
            ServiceHost host = new ServiceHost(typeof(CityImp));
            host.Open();
            
        }


 

在IE地址栏中输入源数据地址,可以打开源数据地址,效果图如下

http://localhost:8003/WCFServicImp.CityImp/metadata

客户端通过添加服务引用的方式,调用该地址,客户端添加服务引用该地址后,会自动在客户端的配置文件中添加终结点信息和配置信息

添加方式如下

 

客户端配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="WSHttpBinding_ICity" 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:8003/WCFServicImp.CityImp"
                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ICity"
                contract="CityImpClient.ICity" name="WSHttpBinding_ICity">
                <identity>
                    <userPrincipalName value="zhangxianga@vancloa.cn" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>


 

 

客户端代码

 

   private void button1_Click(object sender, EventArgs e)
        {
            CityImpClient.CityClient cc = new WcfClient.CityImpClient.CityClient();
            DataSet ds=cc.GetAllCity();
        }


 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值