ОБНОВЛЕНИЕ 3:
Я создал тестовый проект Visual Studio 2008 и попытался создать ссылку на службу для ссылки на службу WCF общего сайта и получил следующую ошибку:
Произошла ошибка при загрузке
«http://apps.mydomain/MyService.svc'.
Запрос не выполнен с HTTP-статусом
ошибка 400, неверный запрос. Метаданные содержат
ссылка, которая не может быть решена:
«http://apps.mydomain/MyService.svc'.
Тип контента приложения / мыло + xml;
charset = utf-8 не поддерживается
оказание услуг
http://apps.mydomain/MyService.svc'.
Привязки клиента и сервиса могут быть
несовпадающими. Удаленный сервер вернулся
ошибка: (415) Не удается обработать
сообщение, потому что тип содержимого
«Приложения / мыло + XML; кодировка = UTF-8'
не был ожидаемый тип 'text / xml;
charset = utf-8 '.. Если служба
определяется в текущем решении, попробуйте
построение решения и добавление
сервисная ссылка снова.
ОБНОВЛЕНИЕ 2:
@Nick - Я попробовал ваше предложение о точной установке адреса каждой конечной точки с указанием полного пути каждого сервера, и я все еще получаю тот же результат.
Кроме того, когда я пытаюсь установить атрибут listenUri с URL-адресом общего сайта, я получаю ошибку 400 неверных запросов вместо ошибки 404.
ОБНОВЛЕНИЕ
После некоторых дополнительных исследований возникли некоторые конфликты параметров конфигурации IIS между http://apps1.mydomain и http://apps2.mydomain, и он смог обойти ошибку «Серверное приложение недоступно».
Теперь я получаю сообщение об ошибке 404 при попытке перейти к общему сайту (http://apps.mydomain),, но я могу перейти к справочнику услуг http://apps1.mydomain и http://apps2.mydomain.
Исходная задача
Моя компания использует Microsoft NLB для балансировки трафика между нашими серверами IIS. Недавно я развернул службу WCF на всех серверах IIS 6 Windows Server 2003 Standard Edition с пакетом обновления 1 (SP1). Я получил следующую ошибку при попытке перейти к общему имени домена с помощью IE 7:
Серверное приложение недоступно
веб-приложение, которое вы пытаетесь
доступ на этом веб-сервере в настоящее время
недоступен. Пожалуйста, нажмите «Обновить»
кнопка в вашем веб-браузере, чтобы повторить попытку
ваш запрос.
Примечание администратора: сообщение об ошибке
детализируя причину этого конкретного
Ошибка запроса может быть найдена в
журнал событий приложения в Интернете
сервер. Пожалуйста, просмотрите эту запись журнала
чтобы выяснить, что вызвало эту ошибку
происходят.
Потребитель будет указывать на http://apps.mydomain для использования службы, но виртуальный домен сопоставляется с http://apps1.mydomain или http://apps2.mydomain. Если я обращаюсь к службе на каждом сервере, не получить эту ошибку.
В настоящее время служба использует анонимную базовую HttpBinding.
Кто-нибудь еще сталкивался с этой проблемой?
История
До того, как эта ошибка начала возникать, я получил следующую ошибку, когда мне показывали все три имени домена (http://apps.mydomain, http://apps1.mydomain, http://apps2.mydomain):
Эта коллекция уже содержит
адрес со схемой http. Там может
быть не более одного адреса на схему в
эта коллекция.
Я использовал класс ServiceHostFactory , чтобы настроить мой файл .svc для указания фабрики пользовательских сервисов. Затем я создаю нашу собственную фабрику, наследуя ее от ServiceHostFactory и переопределяя при необходимости.
public class MyFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
return new ServiceHost(serviceType, baseAddresses[0]);
}
}
<%@ ServiceHost Language="C#" Factory="MyFactory" Debug="true" Service="MyService" CodeBehind="~/App_Code/MyService.cs" %>