В WCF для HttpContext по умолчанию и по умолчанию задано значение NULL, даже если служба WCF размещена в IIS; в конце концов, WCF - это , а не ASP.NET.
Если вам действительно нужен HttpContext, вам нужно включить его отдельно, через config (web.config
, если вы размещаете в IIS, ваше приложение для самостоятельного размещения app.config
в противном случае):
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
и вам нужно указать этот факт (что ваша служба разрешает или даже ожидает режим совместимости с ASP.NET), поместив этот атрибут в свой класс службы (который реализует контракт на обслуживание):
[AspNetCompatibilityRequirements
(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
public class MyWCFService : IMyWCFService
{
......
}
RequirementsMode=Allowed
просто разрешает режим совместимости с ASP.NET, тогда как RequirementsMode=Required
фактически требует, есть и не будет работать без него.
Как только вы это сделаете, вы должны получить HttpContext.Current
, когда подключите отладчик к рабочему процессу IIS.
Марк