码迷,mamicode.com
首页 > 其他好文 > 详细

WCF服务自宿主

时间:2015-04-28 11:41:41      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:wcf   wpf   自宿主   

在WPF客户端引用WCF服务项目程序集和System.ServiceModel程序集,如果需要读取配置文件则引用System.Configuration程序集。

 

在App.cs 文件中相应的方法添加相应的启动服务方法,整体示例代码如下:

private MainWindow mainWindow;
private ServiceHost Host = null;

static App()

Unknown macro: { //MVVM多线程UI处理帮助类。 // DispatcherHelper.Initialize(); }

/// <summary>
/// 引发Startup事件
/// </summary>
/// <param name="e">启动参数</param>
protected override void OnStartup(StartupEventArgs e)

Unknown macro: { base.OnStartup(e); Init(); }

/// <summary>
/// 初始化
/// </summary>
private void Init()
{
try
{
//服务启动后才能跳转到主应用程序
if (StartServers())

Unknown macro: { InitMainWindow(); }

}
catch (Exception ex)

Unknown macro: { //记录日志 }

}

/// <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)

Unknown macro: { //行为 ServiceMetadataBehavior behavior = new ServiceMetadataBehavior(); behavior.HttpGetEnabled = true; //元数据地址 behavior.HttpGetUrl = new Uri("http}

}
catch (Exception ex)

Unknown macro: { //记录日志 return false; }

}
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)

Unknown macro: { string typeName = el.Name + "," + el.Name.Substring(0,el.Name.LastIndexOf(‘.‘)); Type svcType = Type.GetType(typeName); if (svcType == null) throw new Exception("Invalid Service Type " + el.Name + " in configuration file."); Host = new ServiceHost(svcType); Host.Open(); }

}
catch (Exception ex)

Unknown macro: { //记录日志 return false; }

}
return true;
}

/// <summary>
/// 程序退出
/// </summary>
/// <param name="e"></param>
protected override void OnExit(ExitEventArgs e)

Unknown macro: { base.OnExit(e); CloseHost(); }

/// <summary>
/// 关闭服务。
/// </summary>
private void CloseHost()
{
if (Host != null)

Unknown macro: { Host.Close(); }

}

/// <summary>
/// 初始化应用程序主窗口
/// </summary>
private void InitMainWindow()

Unknown macro: { mainWindow = new MainWindow(); }

WCF服务自宿主

标签:wcf   wpf   自宿主   

原文地址:http://blog.csdn.net/houxingding/article/details/45333489

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!