如何通过C#中的代码设置ServiceHostingEnvironmentSection.AspNetCompatibilityEnabled

时间:2011-03-31 09:44:15

标签: c# wcf

我有两个问题:

  1. 我在控制台应用程序中托管了一个wcf服务,如果我将 ServiceHostingEnvironmentSection.AspNetCompatibilityEnabled 设置为true,我可以在控制台应用程序中访问 HttpContext.Current.Session
  2. 如果我可以访问控制台应用程序中的 HttpContext.Current.Session ,如何按代码设置 ServiceHostingEnvironmentSection.AspNetCompatibilityEnabled
  3. 请注意,我使用的是 WSHttpBinding

2 个答案:

答案 0 :(得分:1)

AFAIK,并以最简单的形式提出:

  • 不和,
  • 不,你不能。

为了详细说明,ServiceHostingEnvironment类包含AspNetCompatibilityEnabled(有关详细信息,请参阅here),并且只能获取,不可设置。

这将导致人们假设 - 非常可靠 - 你不能这样做。一些大师可能知道另一种方法,但是,我非常怀疑它,因为这是一个我认为需要在服务器上执行应用程序而不是在执行期间进行评估的配置。

编译(通过使用AspNetCompatibilityRequirements属性的装饰元素)也可用于配置类型;但这可能与现有的配置文件设置齐头并进。

如需进一步阅读,请查看this article

答案 1 :(得分:1)

我认为你不能。

AspNetCompatibilityEnabled设置允许您访问当前应用程序的http上下文(如果它是IIS 中托管的http wcf Web服务)。您的不在IIS中托管,因为它是一个控制台应用程序。

我认为能够在控制台应用程序中到达HttpContext.Current.Session真的没有任何意义(无论如何我都能看到)。您想要达到哪个会话(或上下文)?您的服务器上可能有许多网站,每个网站都有自己的上下文。您的控制台应用程序实际上并不与其中任何一个相关。

有关此设置的更多内容可以在this页面的一半左右阅读。