在WCF中不能使用HttpSession,即使Host是IIS也不可以,这就造成在WEB应用中集成WCF不太方便,其实可以通过配置搞定,关键在于三点:Host、契约类、Client端。

Host上要求Web.config中有定义:

  1. <system.serviceModel> 
  2.     <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
  3. </system.serviceModel> 

契约实现类上要有Attribute指明允许使用session,要设在实现类上而不是契约接口上:

  1. [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
  2. publicic class Hello : IHello 
  3.     //...... 

Client端配置文件中定义binding时要允许使用cookie,设置allowCookies=true:

  1. <system.serviceModel> 
  2.     <binding name="WSHttpBinding_IHello" allowCookies="true" /> 
  3. </system.serviceModel> 

这样就可以放心使用 HttpContext.Current.Session 了。