相关疑难解决方法(0)

WCF服务属性用于记录方法调用和异常

我需要在WCF服务中记录每个方法调用,并抛出任何异常.这导致了许多冗余代码,因为每个方法都需要包含类似于此的样板:

[OperationContract]
public ResultBase<int> Add(int x, int y)
{
    var parameters = new object[] { x, y }
    MyInfrastructure.LogStart("Add", parameters);
    try
    {
        // actual method body goes here
    }
    catch (Exception ex)
    {
        MyInfrastructure.LogError("Add", parameters, ex);
        return new ResultBase<int>("Oops, the request failed", ex);
    }
    MyInfrastructure.LogEnd("Add", parameters);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以将所有这些逻辑封装到一个属性中MyServiceLoggingBehaviorAttribute,我可以将其应用于服务类(或方法),如下所示:

[ServiceContract]
[MyServiceLoggingBehavior]
public class MyService
{
}
Run Code Online (Sandbox Code Playgroud)

注意#1

我意识到这可以使用面向方面的编程来完成,但在C#中,唯一的方法是修改字节码,这需要使用像PostSharp这样的第三方产品.我想避免使用商业图书馆.

笔记2

请注意,Silverlight应用程序是该服务的主要使用者.

注意#3

在某些情况下,WCF跟踪日志记录是一个不错的选择,但它在这里不起作用,因为如上所述,我需要检查,并且在异常更改的情况下,返回值.

c# wcf logging aop custom-attributes

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

aop ×1

c# ×1

custom-attributes ×1

logging ×1

wcf ×1