Dot-Net

如何確定正在執行的程序集是 Web 應用程序還是 winform/控制台?

  • October 16, 2015

我想編寫一個輔助函式來建構異常消息以寫入日誌。程式碼如下:

if(IsWebApp)

{

      使用 HttpContext 獲取請求路徑和 RawUrl }

else

{

      //else it a winform/console

      使用程序集獲取執行路徑。

}

使用HttpRuntime類:

if (!String.IsNullOrEmpty(HttpRuntime.AppDomainAppVirtualPath))
   //ASP.Net
else 
   //Non-ASP.Net

只需檢查一些僅存在於 Web 應用程序中的對象,就像HttpRuntime.AppVirtualPathSLaks 建議的那樣。

如果它是一個 Web 應用程序,您仍然需要檢查是否HttpContext.Current為空。如果異常發生在由於請求而未執行的程式碼中,則它沒有任何上下文。例如,Session_OnEnd 事件在伺服器會話被刪除時執行,因此它沒有上下文。

引用自:https://stackoverflow.com/questions/2653969