Развертывание служб WCF в SharePoint без изменения Web.Config? - PullRequest
1 голос
/ 13 октября 2009

Я изучаю возможность развертывания служб WCF на ферме SharePoint / WebApplication / Site / Web через функцию SharePoint без использования класса SPWebConfigModification или ручного редактирования файла web.config. Исправление виртуального пути Gille уже применено, поэтому оно не учитывается. Самое дальнее, что я смог получить до сих пор, - это создание собственного класса ServiceHostFactory, на который я ссылаюсь в файле .svc, например:

<%@ ServiceHost Language="C#" Debug="true" Service="Company.Namespace.ServiceClass" Factory="Company.Namespace.CustomServiceHostFactory" %>
<%@ Assembly Name="Company.WCFCustomLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0000000000000000" %>

Я переопределяю ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) внутри своей фабрики хостов пользовательских служб и применяю различные конфигурации привязки / конечной точки внутри. Но проблема, с которой я сталкиваюсь, заключается в том, что метод даже не вызывается, когда я запрашиваю файл .svc в своем веб-браузере. У меня сложилось впечатление, что IIS попытается создать ServiceHost, используя указанную мной ServiceHostFactory, как только я вызову .svc в своем веб-браузере. Я полностью ошибаюсь? Кто-нибудь когда-нибудь пытался сделать что-то подобное раньше? Если так, то что-то мне не хватает? Возможно ли полностью настроить ServiceHost программно или мне все еще нужно возиться с тегами <system.serviceModel> внутри web.config?

Ответы [ 2 ]

2 голосов
/ 14 октября 2009

Вы можете делать то, что вы хотите, и заставить WCF читать конфигурацию, где бы вы ни хотели. Я построил это один раз, чтобы позволить каждой службе WCF читать из своего собственного файла конфигурации. Подходит для тестирования и самостоятельного развертывания. Этот метод включает переопределение метода ServiceHost.ApplyConfiguration .

Этот пост содержит некоторые дополнительные сведения и полный исходный код.

Другой подход, представляющий общий интерес, может состоять в том, чтобы позволить службе WCF считывать свою конфигурацию где-то из централизованного хранилища - базы данных, удаленного файлового сервера и т. Д. Вы можете использовать тот же базовый CustomServiceHost и просто изменить один метод для загрузки из база данных или что-то еще.


ps: причина, по которой IIS исчезает, - я подозреваю, у вас возникла исключительная ситуация в WCF ServiceHost.

0 голосов
/ 14 октября 2009

Возможно, это не тот ответ, который вы ищете, но я подробно рассказал о том, как использовать WCF-подобную возможность в SharePoint в вики-странице SharePoint Depth здесь . Я подробно расскажу об использовании HttpHandler вместо WCF, но у меня также есть несколько ссылок на полноценный WCF в SharePoint.

В подходе HttpHandler вам не нужно изменять корневой файл web.config, но вам нужно добавить файл web.config в вашу собственную папку.

Надеюсь, это поможет понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...