使用 Asmx Web 服务实现 PostSharp

Implementing PostSharp with Asmx Web Service

我目前正在尝试将 postsharp 与我的 asmx 网络服务集成,以记录异常。

这是我的 Aspect 透视图代码:

[Serializable]
public class LogPerformance : OnMethodBoundaryAspect
{
    public override void OnEntry(MethodExecutionArgs args)
    {
        string test = "test";
        base.OnEntry(args);
    }

    public override void OnExit(MethodExecutionArgs args)
    {
        string test = "test";
        base.OnExit(args);
    }

    public override void OnException(MethodExecutionArgs args)
    {
        string test = "test";
        base.OnException(args);
    }
}

在我的 Service.cs class 中,我有以下网络方法:

[WebMethod(EnableSession = true)]
[SoapHeader("authentication")]
[LogPerformance]
public DataTable loginUser(string userName, string password)
{
    doStuff();
}

开门见山:

重要的是要注意,相同的 LogPerformance Class 在与以下项集成时运行平稳:

问题是当我将它与 .asmx Web 服务一起使用时。向正确的方向稍微推动一下将不胜感激。

PostSharp 支持 *.asmx 网络服务。但是,您需要注意您的 ASP.NET 项目是 网站 还是 Web 应用程序 (ASP.NET Web Site or ASP.NET Web Application?). Only Web Application projects are supported by PostSharp. For more information on compatibility you can also check Requirements and Compatibility

您可以按照博客 post Converting a Web Site Project to a Web Application Project。转换后,您需要将 PostSharp NuGet 包安装到您的项目中。