2017-09-05 102 views
1

我正在嘗試將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

回答

1

的*的.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軟件包安裝到您的項目中。