使用Asmx Web服务实现PostSharp

问题描述:

我正在尝试将loggingharp与asmx Web服务集成以实现日志记录异常。使用Asmx Web服务实现PostSharp

这里是我的看点透视代码:

[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类,我下面的Web方法:

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

即将开门见山:

  • postsharp是否支持Web方法的实现?正如我的情况下, postSharp方法不会被调用时接收 一击的Web方法。 (是的,我一直在使用的NuGet添加postsharp参考和/或/加手动添加它的dll以及)This确实 建议对所提到的主题了一步,但我不能做任何事情 出来。

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

    需要注意的是,当与集成在同一LOGPERFORMANCE类运行平稳是非常重要的

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

+0

首先,您需要确保在构建项目时执行PostSharp编译器。您的项目必须具有* .csproj项目文件,并且此项目文件必须包含带有PostSharp.targets的导入行。在您的编译输出中,您应该至少看到一条来自PostSharp的消息。 – AlexD

+0

@alexD感谢您的回复,我刚刚检查并验证我的解决方案没有.csproj文件。其次,在我的构建输出中,我没有看到任何来自帖子尖锐的消息。您能否确认您的产品对.asmx服务的支持? –

+0

.asmx受支持,但仅限于具有* .csproj文件的Web应用程序项目。您需要将您的网站转换为Web应用程序,请在此博客文章(https://blogs.msdn.microsoft.com/ Webdev的/ 2009/10 /第29 /转换-A-的网站项目到一个的Web应用程序项目/)。转换后,您需要将PostSharp NuGet软件包安装到您的项目中。 – AlexD

的*的.asmx Web的服务是由PostSharp支持。然而,你需要注意你的ASP.NET项目是否是一个网站Web应用程序ASP.NET Web Site or ASP.NET Web Application?)。只有Web应用程序项目受PostSharp支持。有关兼容性的更多信息,您还可以检查Requirements and Compatibility

您可以通过以下从博客文章Converting a Web Site Project to a Web Application Project准则转换您网站项目Web应用程序项目。转换后,您需要将PostSharp NuGet软件包安装到您的项目中。