在核心程序集中,它在Windows服务和Web应用程序中运行,我需要按用户会话存储信息.该服务将具有单个用户会话,并且Web应用程序使用HttpContext.Current.
我想配置在核心程序集中使用哪种方法 - 约定优于配置.我只想这样做一次,我相信当从Application_Start运行时,HttpContext.Current将为null.
如何可靠地确定应用程序是否是Web应用程序?
小智 42
if(HttpRuntime.AppDomainAppId != null)
{
//is web app
}
else
{
//is windows app
}
Run Code Online (Sandbox Code Playgroud)
Rub*_*ben 15
我会去的
HostingEnvironment.IsHosted
Run Code Online (Sandbox Code Playgroud)
请注意,即使您不打算使用此类程序集中的方法,也会产生轻微的开销.(System.Web程序将加载和几类可以初始化和JIT编译.)此外,还有上的System.Web hard依赖了,所以在有限的框架设定(目前仅IIRC与客户端配置文件),你不能用它.
另一种方式(尽管不是很整洁并且有文件证明),是检查
Path.GetFileName(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)
Run Code Online (Sandbox Code Playgroud)
如果返回web.config(或其外壳变体),它可能是一个Web应用程序.(虽然你可以设置一个名为配置文件的任何应用程序域web.config,这不是一个可能的情况).这避免了承担的System.Web的依赖.
但是,HostingEnvironment.IsHosted旨在指示appdomain是否配置为在ASP.NET下运行.