我们有一个在 Web 环境和 Windows 服务中调用的程序集。在一种方法中,它需要调查请求。但是当它在 Windows 服务中运行时,我们需要跳过该代码。我用了常用的方法
if (HttpContext.Current == null)
return;
但是会发生什么,上下文不是空的,因为第三方程序集中的某个地方创建了假服务器。因此HttpContext.Current
包含Server
、Request
等。在快速监视中,可以看到这是不同类型的上下文。我可以通过这样做来解决问题
if (HttpContext.Current == null ||
HttpContext.Current.Request.Url.Host.IndexOf("www.izenda.com",StringComparison.CurrentCultureIgnoreCase) > -1)
return;
但是,如果下一个版本的 Izenda 在 URL 中有其他内容怎么办?如果公司更改名称和 URL 会有所不同怎么办?
是否有其他属性可以将真实的 Web 服务器请求或上下文与此假对象分开?
只需在WindowsService配置文件的应用程序设置中放置一个键即可。
<add key="isService" value="true"/>
并输入校验代码以区分黑白网络或服务。