在WPF客户端引用WCF服务项目程序集和System.ServiceModel程序集,如果需要读取配置文件则引用System.Configuration程序集。
在App.cs 文件中相应的方法添加相应的启动服务方法,整体示例代码如下:
private MainWindow mainWindow;
private ServiceHost Host = null;
static App()
/// <summary>
/// 引发Startup事件
/// </summary>
/// <param name="e">启动参数</param>
protected override void OnStartup(StartupEventArgs e)
/// <summary>
/// 初始化
/// </summary>
private void Init()
{
try
{
//服务启动后才能跳转到主应用程序
if (StartServers())
}
catch (Exception ex)
}
/// <summary>
/// 启动WCF服务
/// </summary>
private bool StartServer()
{
if (Host == null)
{
try
{
Host = new ServiceHost(typeof(WcfService1.Service1));
//绑定
System.ServiceModel.Channels.Binding httpBinding = new BasicHttpBinding();
//终结点
Host.AddServiceEndpoint(typeof(WcfService1.IService1), httpBinding, "http://localhost:18492/");
if (Host.Description.Behaviors.Find<System.ServiceModel.Description.ServiceMetadataBehavior>() == null)
}
catch (Exception ex)
}
return true;
}
/// <summary>
/// 启动WCF服务,重app.config文件中读取配置信息
/// </summary>
private bool StartServers()
{
if (Host == null)
{
try
{
Configuration conf = ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly().Location);
ServiceModelSectionGroup svcmod = (ServiceModelSectionGroup)conf.GetSectionGroup("system.serviceModel");
foreach (ServiceElement el in svcmod.Services.Services)
}
catch (Exception ex)
}
return true;
}
/// <summary>
/// 程序退出
/// </summary>
/// <param name="e"></param>
protected override void OnExit(ExitEventArgs e)
/// <summary>
/// 关闭服务。
/// </summary>
private void CloseHost()
{
if (Host != null)
}
/// <summary>
/// 初始化应用程序主窗口
/// </summary>
private void InitMainWindow()