MyServiceBehavior.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:MyServiceBehavior.cs
  5. * 2.功能描述:服务端终结点行为的行为扩展
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈晓野 2014/09/16 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.ObjectModel;
  12. using System.ServiceModel;
  13. using System.ServiceModel.Channels;
  14. using System.ServiceModel.Configuration;
  15. using System.ServiceModel.Description;
  16. using System.ServiceModel.Dispatcher;
  17. namespace Dongke.IBOSS.PRD.WCF.Services.ServiceInterpector
  18. {
  19. /// <summary>
  20. /// 服务端终结点行为的行为扩展
  21. /// </summary>
  22. public class MyServiceBehavior : BehaviorExtensionElement, IServiceBehavior
  23. {
  24. /// <summary>
  25. /// 获取行为的类型
  26. /// </summary>
  27. public override Type BehaviorType
  28. {
  29. get { return typeof(MyServiceBehavior); }
  30. }
  31. /// <summary>
  32. /// 于当前配置设置来创建行为扩展
  33. /// </summary>
  34. /// <returns>行为扩展</returns>
  35. protected override object CreateBehavior()
  36. {
  37. return new MyServiceBehavior();
  38. }
  39. #region IServiceBehavior Members
  40. /// <summary>
  41. /// 于向绑定元素传递自定义数据,以支持协定实现
  42. /// </summary>
  43. /// <param name="serviceDescription">服务的服务说明</param>
  44. /// <param name="serviceHostBase">服务的宿主</param>
  45. /// <param name="endpoints">服务终结点</param>
  46. /// <param name="bindingParameters">绑定元素可访问的自定义对象</param>
  47. public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
  48. {
  49. }
  50. /// <summary>
  51. /// 用于更改运行时属性值或插入自定义扩展对象(例如错误处理程序、消息或参数拦截器、安全扩展以及其他自定义扩展对象)
  52. /// </summary>
  53. /// <param name="serviceDescription">服务说明</param>
  54. /// <param name="serviceHostBase">当前正在生成的宿主</param>
  55. public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
  56. {
  57. foreach (ChannelDispatcher chDisp in serviceHostBase.ChannelDispatchers)
  58. {
  59. foreach (EndpointDispatcher epDisp in chDisp.Endpoints)
  60. {
  61. epDisp.DispatchRuntime.MessageInspectors.Add(new ServiceInterpector());
  62. }
  63. }
  64. }
  65. /// <summary>
  66. /// 用于检查服务宿主和服务说明,从而确定服务是否可成功运行
  67. /// </summary>
  68. /// <param name="serviceDescription">服务说明</param>
  69. /// <param name="serviceHostBase">当前正在构建的服务宿主</param>
  70. public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
  71. {
  72. }
  73. #endregion
  74. }
  75. }