如何确定执行程序集是Web应用程序还是winform / console?

时间:2010-04-16 15:03:51

标签: .net asp.net c#-4.0

我想编写一个帮助函数来构建异常消息以写入日志。 代码如下:

如果(IsWebApp)
{

  使用HttpContext获取Request Path和RawUrl }
否则
{
  //它是一个winform / console
   使用Assembly来获取执行路径  
}

5 个答案:

答案 0 :(得分:12)

使用HttpRuntime类:

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

答案 1 :(得分:1)

只需检查一些仅存在于Web应用程序中的对象,例如SLaks建议的HttpRuntime.AppVirtualPath

如果是Web应用程序,您仍然需要检查HttpContext.Current是否为空。如果异常发生在请求未运行的代码中,则它没有任何上下文。例如,Session_OnEnd事件在删除服务器会话时运行,因此它没有上下文。

答案 2 :(得分:0)

您可以查看HttpContext.Current!= null。

答案 3 :(得分:0)

怎么样

If (Not System.Web.HttpContext.Current Is Nothing) Then

End If

if(System.Web.HttpContext.Current != null){

}

答案 4 :(得分:0)

我使用DomainManager类型的当前AppDomain。 MSDN documentation of AppDomainManager

public static class AspContext
{
    public static bool IsAspNet()
    {
        var appDomainManager = AppDomain.CurrentDomain.DomainManager;
        return appDomainManager != null && appDomainManager.GetType().Name.Contains("AspNetAppDomainManager");
    }
}

您还可以查看this other answer on SO