WCF随客户端软件一起发布,客户端自动识别WCF服务地址,不通过配置文件绑定WCF服务,客户端动态获取版本号

简介: WCF发布到IIS,并有相应的SVC宿主文件客户端软件通过CLICK ONCE发布到WCF的相同目录下本例实现了:客户端自动发现WCF服务的功能 1 不通过配置文件绑定WCF服务 代码 ICallCenter proxy = null; BasicHttp...

WCF发布到IIS,并有相应的SVC宿主文件
客户端软件通过CLICK ONCE发布到WCF的相同目录下
本例实现了:客户端自动发现WCF服务的功能

1 不通过配置文件绑定WCF服务

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
 
  
ICallCenter proxy = null ;
BasicHttpBinding binding
= new BasicHttpBinding();EndpointAddress address = new EndpointAddress(AppDeploymentUtils.GetWcfUri());
binding.MaxReceivedMessageSize
= 6553600 ;
binding.MaxBufferPoolSize
= 52428800 ;
binding.MaxBufferSize
= 6553600 ;
binding.ReaderQuotas.MaxDepth
= 3200 ;
binding.ReaderQuotas.MaxStringContentLength
= 819200 ;
binding.ReaderQuotas.MaxArrayLength
= 16384 ;
binding.ReaderQuotas.MaxBytesPerRead
= 409600 ;
binding.ReaderQuotas.MaxNameTableCharCount
= 16384 ;
ChannelFactory channelFactory
= new ChannelFactory(binding, address);
proxy
= channelFactory.CreateChannel();

 

上述代码中AppDeploymentUtils.GetWcfUri()是获取WCF地址的方法
代码详细如下

2 动态获取WCF地址

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
 
  
/// <summary>
/// 获取WCF的服务路径
/// </summary>
/// <returns></returns>
public static string GetWcfUri()
{
if (ApplicationDeployment.IsNetworkDeployed) // 是否已连接
{
string url = ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri.Replace( " Life365.CallCenter.application " , " CallCenterWCF.svc " );
return url;
}
else
{
return " http://localhost:8080/CallCenterWCF.svc " ;
}
}

 

 

3动态获取ClickOnce的版本号

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
 
  
/// <summary>
/// 获取客户端发布版本号
/// </summary>
/// <returns> 当前版本号 </returns>
public static string GetVersiion()
{
if (ApplicationDeployment.IsNetworkDeployed) // 是否已连接
{
ApplicationDeployment currDeployment
= ApplicationDeployment.CurrentDeployment;
string version = currDeployment.CurrentVersion.Major.ToString(); // 主版本
version += " . " + currDeployment.CurrentVersion.Minor.ToString(); // 次版本
version += " . " + currDeployment.CurrentVersion.Build.ToString(); // 内部版本号
version += " . " + currDeployment.CurrentVersion.Revision.ToString(); // 修订号
return version;
}
return string .Empty;
}

 

 

目录
相关文章
|
前端开发
WCF更新服务引用报错的原因之一
WCF更新服务引用报错的原因之一
|
C# 数据安全/隐私保护
c#如何创建WCF服务到发布(SqlServer版已经验证)
c#如何创建WCF服务到发布(SqlServer版已经验证)
73 0
|
安全 数据库连接 数据库
WCF服务创建到发布(SqlServer版)
在本示例开始之前,让我们先来了解一下什么是wcf? wcf有哪些特点? wcf是一个面向服务编程的综合分层架构。该架构的项层为服务模型层。 使用户用最少的时间和精力建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案。且能与已有系统兼容写作。 简单概括就是:一组数据通信的应用程序开发接口。
113 0
|
XML 网络协议 IDE
WCF基础教程(三)——WCF通信过程及配置文件解析
WCF基础教程(三)——WCF通信过程及配置文件解析
370 0
WCF基础教程(三)——WCF通信过程及配置文件解析
|
C++
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
141 0
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
|
网络协议 安全 Windows
WCF如何绑定netTcpBinding寄宿到控制台应用程序详解
新建一个WCF服务类库项目,在其中添加两个WCF服务:GameService,PlayerService
WCF如何绑定netTcpBinding寄宿到控制台应用程序详解
|
网络协议
WCF绑定的选择
版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/8593924 格式与编码 每种标准绑定使用的传输协议与编码格式都不相同,如表1-1 所示。
619 0
|
监控
Wcf通讯基础框架方案(三)——客户端
假设定义了一个服务契约: [ServiceContract(Namespace = "WcfExtension.Services.Interface")] public interface ITestService { [OperationContract] ...
717 0