簡體   English   中英

在C#中,如何從引用的項目中獲取調用項目的名稱?

[英]In C#, how can I get the name of the calling project from within a referenced project?

我有三個項目:My.Business,My.WebSite和My.WebService

我需要我的日志記錄類,以便能夠識別何時從網站請求請求到Web服務。 以前,我曾將Web服務作為單獨的應用程序在網站下面運行,所以我只使用了不同的配置文件,效果很好。 但是我希望Web服務現在可以在同一應用程序下運行。

如果我能確定請求是來自My.WebSite還是My.WebService,我會被設置,但是我不確定該怎么做。

  • Assembly.GetExecutingAssembly()返回My.Business
  • Assembly.GetEntryAssembly()為null
  • 我可以檢查StackTrace,但這似乎草率,我該如何退后? 尤其是因為日志記錄可能是由My.Business中最初從其他項目之一調用的代碼觸發的。

由於Web服務請求以“ .asmx”結尾,因此可以使用以下概念,但是感覺不對。

return HttpContext.Current.Request.Path.IndexOf(".asmx") >= 0 ? "My.WebService" : "My.WebSite";

謝謝!

您應該能夠使用Assembly.GetCallingAssembly():

return Assembly.GetCallingAssembly().FullName;

這將返回調用當前執行方法的程序集,因此您可以捕獲以這種方式調用My.Business程序集的任何人。

話雖如此,我傾向於同意梅里昂·休斯的上述評論。 您可能想考慮將任何必需的信息傳遞給日志記錄類,尤其是如果將來有可能在更多應用程序中使用它時。

this.GetType().Assembly.FullName將為您提供當前類的程序集名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM