Служба 404 WCF на пользовательском адресе конечной точки

#wcf #http-status-code-404

#wcf #http-status-code-404

Вопрос:

Я могу просмотреть URL веб-сервиса, и он отлично отображается в браузере.

Я могу получить ?wsdl из веб-браузера.

Когда я обращаюсь к службе, я получаю 404 (скрипач говорит: HTTP / 1.1 404 не найден)

*.svclog записывается, когда я обращаюсь к адресу с помощью браузера, но не когда я обращаюсь к нему с помощью soap-клиента.

 using (ImportServiceClient client = 
    new ImportServiceClient("ImportServiceSoap12", REMOTE_ADDRESS))
{
  

Я пробовал базовые адреса и wsdlExtensions WCFExtras.
Все тот же 404.
Я смотрел на это: http://www.jamesgoodfellow.com/blog/post/IIS-60—HTTP-404—File-not-found-Internet-Information-Services.aspx но поскольку это XP, эта папка не существует, и она работает в веб-браузере, и создается *.svclog.

Тестовый компьютер, на котором я пытаюсь запустить эту штуку, — XP. Доступ к компьютеру осуществляется по адресу без ip.

До WCF я решал это с помощью via, но, похоже, я не могу найти решение в WCF.

Обновить

При выполнении «Настройки ссылки на службу» для этой конечной точки я смог заметить кое-что интересное от fiddler:

/IntegrationServer/ImportService.svc возвращает 404
/IntegrationServer/ImportService.svc/mex возвращает 200
/IntegrationServer/ImportService.svc?wdsl возвращает 200

ОБНОВЛЕНИЕ 2

Похоже, что
/IntegrationServer/ImportService.svc/soap
/IntegrationServer /ImportService.svc / soap12
также работает. Это моя конфигурация конечной точки.

 <endpoint name="ImportServiceSoap" behaviorConfiguration="NoIpConfiguration" address="soap" binding="basicHttpBinding" contract="Integration.Server.IImportService"/>
<endpoint name="ImportServiceSoap12" behaviorConfiguration="NoIpConfiguration" address="soap12" binding="wsHttpBinding" contract="Integration.Server.IImportService">
  

Правильно ли предположение, что я всегда должен добавлять свойство «address» к адресу службы, если я хочу использовать пользовательский адрес конечной точки в клиенте?

Комментарии:

1. Я не понимаю вашего вопроса.

2. Извините за этот вопрос. Я каким-то образом удалил часть предложения. Я просто спрашиваю, какой метод запроса / URL / HTTP не работает в данный момент?

Ответ №1:

Да, для пользовательского адреса конечной точки вам необходимо настроить атрибут address в элементе endpoint.

Не видя содержимого элемента service web.config ServiceModel, я предполагаю, что служба настроена на предоставление двух конечных точек метаданных (…?wsdl) и (… / mex). Изменения в вашем ОБНОВЛЕНИИ 2 работают из-за способа настройки конфигурации конечной точки, отображаемой в вашем вопросе (адрес = «soap»). Вот хорошее объяснение адресации в WCF из MSDN.