У меня есть решение, которое содержит несколько WAP ( проекты веб-приложений ).Каждый WAP имеет свой собственный проект Web Deploy , чтобы иметь возможность предварительно скомпилировать эти сайты.В одном из веб-приложений мы создали новый файл WCF с
AspNetCompatibilityRequirementsMode.Allowed
. В режиме отладки все работает нормально, но если я переключаюсь на выпуск, происходит сбой:(мы используем msbuild для создания развертываемых версий)
Не удалось загрузить файл или сборку 'App_Web _ *****, Версия = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null' или одинего зависимостей.Система не может найти указанный файл.
Я нашел какое-то объяснение по этой ссылке: Служба WCF
WCF сохраняет список ссылочных сборок ватрибут customString в результате построения (service.svc.cdcab7d2.compiled), включая App_Global.Кажется, здесь есть неверное предположение, что эти сборки будут всегда, что не обязательно имеет место в проектах веб-развертывания (aspnet_merge), где сборки будут объединены.После шага объединения все сборки фактически объединяются в одну сборку (скажем, MyWebSite.dll), когда мы выбрали эту опцию в WDP.ASP.NET обновляет только скомпилированные файлы, о которых он знает, поэтому App_Global.asax.compiled имеет правильную ссылку на MyWebSite_Deploy.dll вместо App_Global.dll.Исходные сборки удаляются после шага объединения.WCF читает список ранее сохраненных сборок и выдает, когда не может найти App_Global
Список решений, которые я пробовал:
1.Проверить ' Разрешить обновление этого скомпилированного сайта '- не работает
2. Удалить вручную ссылку App_ * из файла service.compile(Это сработало, но должно быть другое решение)
3.Добавить полное имя для сервиса / фабрики в .svcУ службы есть полное имя.
4. Попытался установить этот ключ:<SourceWebPhysicalPath>..\..\ProjectName</SourceWebPhysicalPath>
, следуя этим инструкциям
5. <compilation debug="false" batch="false">
Попытался установить значение web.config с помощью these инструкция
6. " Объединить все выходы в одну сборку "Я не пробовал это, потому что это требует регистрации всех используемых сборок в GAC и означает, что нам нужно изменить логику развертывания.
Я не хочу удалять временную папку asp.net , потому что она останавливает приложение и это недопустимо
Я также нашел Скотт Гаттри ссылка но он с '07 должен был пробиться на asp.net 4.0
Дополнительная информация Сервис размещен:ProjectName\WebResorce\Service.svc
,
<%@ ServiceHost ... Factory="SolutionName.SharedWeb.WadoLabsServiceHostFactory" %>
где SharedWeb является проектом общего вебУ тебя есть другие идеи?заранее спасибо