Я пытаюсь разместить службу WCF в SharePoint. Я настроил службу для совместимости с ASP.NET, чтобы разрешить мне доступ к HttpContext и информации о сеансе
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class MISDataService : IMISDataService { ... }
И моя конфигурация выглядит так
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="MISDataService">
<endpoint address="" binding="webHttpBinding" contract="MISDataViews.IMISDataService" />
</service>
</services>
</system.serviceModel>
Хотя это дает мне доступ к текущему HTTP-контексту, служба всегда размещается в корневом домене, т.е. http://www.mydomain.com/_layouts/MISDataService.svc
.
В SharePoint доступ к URL дает конкретную контекстную информацию о текущем сайте через класс SPContext. Поэтому, если служба размещена в виртуальном каталоге, я бы хотел, чтобы она была доступна по нескольким адресам, например
http://www.mydomain.com/_layouts/MISDataService.svc
http://www.mydomain.com/sites/site1/_layouts/MISDataService.svc
http://www.mydomain.com/sites/site2/_layouts/MISDataService.svc
, чтобы служба могла выяснить, какие данные возвращать, основываясь на текущем контексте.
Можно ли динамически настроить адрес конечной точки? Или единственная альтернатива - разместить службу в одном месте, а затем как-нибудь передать ей «контекст»?