WCF自定义Attribute记录日志或异常

本文介绍了如何在WCF服务中通过创建一个自定义Attribute,继承IOperationBehavior接口,来记录操作日志和捕获处理异常。以RecordAttribute为例,用于标记服务方法并在遇到异常时进行记录。
摘要由CSDN通过智能技术生成

1、定义一个attribute,同时继承接口 IOperationBehavior

[AttributeUsage(AttributeTargets.Method)]
    public class RecordAttribute : Attribute, IOperationBehavior
    {

        private readonly string _operationName;
        private readonly RecordType _recordType;

        public RecordAttribute(string methodname, RecordType recordType)
        {
            _operationName = methodname;
            _recordType = recordType;
        }

        protected RecordInvoker CreateInvoker(IOperationInvoker oldInvoker)
        {
            return new RecordInvoker(oldInvoker, _operationName, _recordType);
        }

        public void Validate(OperationDescription operationDescription)
        {

        }

        public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
        {
            IOperationInvoker oldInvoker = dispatchOperation.Invoker;
            dispatchOperation.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
WCF(Windows Communication Foundation)是一个用于创建分布式应用程序的框架。在WCF中,可以使用多种方式来托管(host)服务,包括IIS、Windows服务、自定义宿主等。 下面介绍一下如何使用自定义宿主来托管WCF服务: 1. 创建一个实现了System.ServiceModel.ServiceHost类的自定义宿主。 ```csharp public class MyServiceHost : ServiceHost { public MyServiceHost(Type serviceType, params Uri[] baseAddresses) : base(serviceType, baseAddresses) { } protected override void OnOpening() { // 在打开宿主之前可以进行一些预处理工作 base.OnOpening(); } protected override void OnClosed() { // 在关闭宿主之前可以进行一些清理工作 base.OnClosed(); } } ``` 2. 在自定义宿主中添加WCF服务的终结点。 ```csharp public class MyServiceHost : ServiceHost { public MyServiceHost(Type serviceType, params Uri[] baseAddresses) : base(serviceType, baseAddresses) { } protected override void OnOpening() { // 添加终结点 this.AddServiceEndpoint(typeof(IMyService), new BasicHttpBinding(), "http://localhost/MyService"); base.OnOpening(); } protected override void OnClosed() { base.OnClosed(); } } ``` 3. 在应用程序中创建自定义宿主实例,并启动宿主。 ```csharp var host = new MyServiceHost(typeof(MyService)); host.Open(); ``` 4. 关闭自定义宿主。 ```csharp host.Close(); ``` 通过自定义宿主,可以对WCF服务进行更加细粒度的控制和定制,比如添加自定义行为、启用安全性等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值