Пожалуйста, смотрите ответ ongle ниже. Это намного лучше, чем этот.
Обновлено после получения дополнительной информации
Следующее сработало для меня. Я протестировал его с новой службой WCF, которую я размещал на IIS через Service1.svc.
- Добавить
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
в веб-конфигурацию. <system.serviceModel>..</ ..>
уже существует.
- Добавить
AspNetCompatibilityRequirementsAttribute
к услуге с разрешенным режимом.
- Используйте
HttpContext.Current.Server.MapPath(".");
, чтобы получить корневой каталог.
Ниже приведен полный код класса обслуживания. Я не внес никаких изменений в интерфейс IService1.
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService1
{
public void DoWork()
{
HttpContext.Current.Server.MapPath(".");
}
}
А ниже приведен отрывок из файла web.config.
<system.serviceModel>
<!-- Added only the one line below -->
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<!-- Everything else was left intact -->
<behaviors>
<!-- ... -->
</behaviors>
<services>
<!-- ... -->
</services>
</system.serviceModel>
Старый ответ
Что вы подразумеваете под рабочей папкой? Службы WCF можно размещать несколькими различными способами и с разными конечными точками, поэтому рабочая папка выглядит несколько неоднозначно.
Вы можете получить обычную «Рабочую папку» с помощью вызова Directory.GetCurrentDirectory () .
HttpContext - это объект ASP.Net. Даже если WCF можно разместить на IIS, он все равно не является ASP.Net, и по этой причине большинство методов ASP.Net не работают по умолчанию. OperationContext является эквивалентом HttpContext в WCF. OperationContext, помимо прочего, содержит информацию о входящем запросе, исходящем ответе.
Хотя проще всего запустить службу в режиме совместимости с ASP.Net , переключив его в web.config. Это должно дать вам доступ к ASP.Net HttpContext. Это будет ограничивать вас * HttpBindings и IIS хостингом. Чтобы переключить режим совместимости, добавьте в файл web.config следующее.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>