WCF - IIS 6 против IIS 7 - PullRequest
       11

WCF - IIS 6 против IIS 7

4 голосов
/ 03 августа 2009

Я создал службу WCF на моей локальной машине. Мой локальный компьютер использует Windows 7 RC1, таким образом, веб-сервер - IIS 7. Однако мой рабочий компьютер - Windows Server 2003, использующий IIS 6.

Когда я пытаюсь сослаться на сервис в моей локальной среде, все работает нормально. Однако, когда я рекламирую свой сервис на своем производственном компьютере и пытаюсь сослаться на сервис, я получаю сообщение об ошибке. Ошибка говорит:

Ошибка: невозможно получить метаданные из http://www.thedomain.com/theService.svc?wsdl

Если это Windows (R) Communication Фонд обслуживания, к которому у вас есть доступ, пожалуйста, проверьте, что у вас есть включена публикация метаданных на указанный адрес. Для помощи помощи публикация метаданных, пожалуйста, обратитесь к документация MSDN по адресу http://go.microsoft.com/fwlink/?LinkId=65455.

URI ошибки обмена метаданными WS: http://www.thedomain.com/theService.svc?wsdl

Метаданные содержат ссылку, которая не может быть решен: «http://www.thedomain.com/theService.svc?wsdl'.

Тип контента приложения / мыло + xml; charset = utf-8 не поддерживается оказание услуг http://www.mydomain.com/myService.svc?wsdl. Привязки клиента и сервиса могут быть несовпадающий.

Удаленный сервер вернул ошибку: (415) Не удается обработать сообщение потому что тип контента «Приложения / мыло + XML; кодировка = UTF-8' не был ожидаемый тип 'text / xml; кодировка = UTF-8' ..

Что-то, что мне нужно сделать в IIS 6, чтобы заставить работать службу WCF? Я действительно смущен тем, почему он работает локально, но не в производстве.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 03 августа 2009

Есть 4 варианта, которые я могу придумать:

  • Некоторые настройки безопасности, блокирующие доступ к услуге. Проверьте ваш журнал IIS на доступ запрещен
  • что конфигурация сервисов web.config не была передана в производство
  • Этот обмен метаданными не настроен с http get позволено
  • То, что вы используете более новую привязку, которая не поддерживается в IIS 6

Привязки, которые поддерживаются IIS 6, являются basicHttpBinding и wsHttpBinding. См:

http://msdn.microsoft.com/en-us/library/cc949086.aspx

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

2 голосов
/ 03 августа 2009

Вы зафиксировали очевидную разницу между двумя средами: одна работает на IIS 6, а другая на IIS 7. Это может быть разница, но не та, которая вызывает проблему.

Сравнивали ли вы файлы web.config в двух средах?

Судя по сообщениям об ошибках, похоже, что WCF работает на рабочей машине, но есть проблема с получением метаданных. Вы пробовали запустить сервис в производстве? Возможно, что это работает, даже если поиск метаданных не работает.


Кроме того, если вы не возражаете против того, чтобы я немного философствовал, вы только что нашли причину для установки серверов. Дело в том, что разница между «1» и «2» намного больше, чем между «2» и «3». Переходя от среды разработки непосредственно к производству, вы впервые сталкиваетесь с проблемами в «нескольких средах». Это похоже на разницу между единственным и множественным числом.

Вы также впервые сталкиваетесь с проблемами в «разных средах». это похоже на разницу между «одним и тем же» и «разными».

Добавление промежуточной системы в середине дает вам возможность заблаговременно избавиться от всех этих проблем, чтобы при переходе от промежуточного производства к производству у вас все еще возникала проблема «разницы», но у вас больше не будет проблем «единственного и множественного числа» - вы уже решите их.

...