我想编写一个帮助函数来构建异常消息以写入日志。 代码如下:
如果(IsWebApp)
{
使用HttpContext获取Request Path和RawUrl
}
否则
{
//它是一个winform / console
使用Assembly来获取执行路径
}
答案 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