Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何区分真实http上下文或请求与虚假http上下文或请求?_C#_Asp.net_Httpcontext_Httpserver - Fatal编程技术网

C# 如何区分真实http上下文或请求与虚假http上下文或请求?

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

我们有一个在Web环境和Windows服务中调用的程序集。在一种方法中,它需要调查请求。但当它在Windows服务中运行时,我们需要跳过该代码。我用了通常的方法

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方式工作。如果是这样的话,那么它将适用于特定的条件,反之亦然。