C# 如何区分真实http上下文或请求与虚假http上下文或请求?
我们有一个在Web环境和Windows服务中调用的程序集。在一种方法中,它需要调查请求。但当它在Windows服务中运行时,我们需要跳过该代码。我用了通常的方法C# 如何区分真实http上下文或请求与虚假http上下文或请求?,c#,asp.net,httpcontext,httpserver,C#,Asp.net,Httpcontext,Httpserver,我们有一个在Web环境和Windows服务中调用的程序集。在一种方法中,它需要调查请求。但当它在Windows服务中运行时,我们需要跳过该代码。我用了通常的方法 if (HttpContext.Current == null) return; 但情况是,上下文不是空的,因为第三方程序集在其中某处创建了假服务器。因此HttpContext.Current包含服务器,请求等。在quick watch中,可以看到这是不同类型的上下文。我可以通过这样做来解决问题 if (HttpContext
if (HttpContext.Current == null)
return;
但情况是,上下文不是空的,因为第三方程序集在其中某处创建了假服务器。因此HttpContext.Current
包含服务器
,请求
等。在quick watch中,可以看到这是不同类型的上下文。我可以通过这样做来解决问题
if (HttpContext.Current == null ||
HttpContext.Current.Request.Url.Host.IndexOf("www.izenda.com",StringComparison.CurrentCultureIgnoreCase) > -1)
return;
但如果下一个版本的Izenda的URL中还有其他内容呢?若公司更改名称,Url将不同,该怎么办
是否有其他属性可以将真实的web服务器请求或上下文与此伪对象分开?只需在WindowsService配置文件的appsettings中输入一个键即可
<add key="isService" value="true"/>
并输入一个签入代码以区分b/w web或服务。您不能检查当前版本吗!=null&&“yourdomain”@eranotzap“我们的域”可以是任何域。安装产品的人是域的所有者。我真的不知道汽车的领域。我只想跳过代码,这不是WEB为什么不在配置文件中添加一些标志?如果我理解正确,那么您正在设计一个其他应用程序使用的类库。在这种情况下,应用程序应该以适合应用程序的方式组成库的类。我不知道有关您的软件的详细信息,但处理http请求的代码可以放在单独的类中,然后应用程序将决定是否将此类组成(即,连接)到其对象图中(例如,如果它是web应用程序,它将组成该类)。@mason提供了有效的建议,但我不会再添加另一个应用程序设置。我不是那个密码的始作俑者。我所做的是重构了下面的代码,以便完全删除对system.web的引用。问题是,谁仍然有效。关于区分上下文。我看到了一些要点,比如运行的应用程序和没有应用程序的应用程序。不同的缺失路径等。为了给出明确的答案,我需要尝试不同的环境。此代码可以在asp.net、web api、web服务等中运行。在win服务的基础上,我希望找到比另一个应用程序设置更好的应用程序设置。应用程序设置的好处是,如果在一个项目中没有添加这些应用程序,那么它们在应用程序中也不会例外,代码将以web方式工作。如果是这样的话,那么它将适用于特定的条件,反之亦然。