使用Asmx Web服务实现PostSharp

时间:2017-09-05 17:50:09

标签: c# asp.net web-services asmx postsharp

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

这是我的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课程中,我使用了以下网络方法:

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

直截了当地说:

  • postsharp支持使用Web方法实现吗?就像我的情况一样, 只要 Web方法收到,就不会调用postSharp方法 一击。 (是的,我使用Nuget添加了postharp引用和/或/ plus手动添加了它的dll)This 建议朝着上述主题迈出一步,但我无法做任何事情 出来的。

重要的是要注意,当与集成时, LogPerformance 类可以顺利运行:

  • Web API
  • ASP.Net Web应用程序(MVC)
  • 控制台应用程序

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

1 个答案:

答案 0 :(得分:1)

PostSharp支持* .asmx网络服务。但是,您需要注意ASP.NET项目是 Web站点还是 Web应用程序ASP.NET Web Site or ASP.NET Web Application?)。 PostSharp仅支持 Web应用程序项目。有关兼容性的更多信息,您还可以查看Requirements and Compatibility

您可以按照博文Converting a Web Site Project to a Web Application Project中的指南将网站项目转换为 Web应用程序项目。转换后,您需要将PostSharp NuGet包安装到您的项目中。