Запуск службы WCF в Vista 64 бит - PullRequest
0 голосов
/ 14 января 2010

У меня есть простое консольное приложение, которое работает в качестве хоста службы WCF. bsicHttpBinding используется. Когда я пытаюсь получить ссылку на службу в моем клиенте (другом консольном приложении), я получаю эту ошибку

" Произошла ошибка при загрузке http: // localhost: 9999 / TS. Запрос не выполнен с состоянием HTTP 400: неверный запрос. Метаданные содержат ссылку, которая не может быть разрешена: «http: // localhost: 9999 / TS». Тип контента приложения / мыло + xml; charset = utf-8 не поддерживается службой http://localhost:9999/TS. Привязки клиента и службы могут не совпадать. Удаленный сервер возвратил ошибку: (415) Невозможно обработать сообщение, потому что тип содержимого 'application / soap + xml; charset = utf-8 'не был ожидаемым типом' text / xml; кодировка = UTF-8' .. Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу . "

Пожалуйста, укажите любые указатели.

App.config:

<configuration>
    <system.serviceModel>
        <services>
            <service
                name="TimeServiceLibrary.TimeService"
                behaviorConfiguration="TSConfig">
                <endpoint address="localhost:9999/TS"
                    binding="basicHttpBinding"
                    contract="TimeServiceLibrary.ITime">
                </endpoint>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="TSConfig">
                    <serviceMetadata httpGetEnabled="True"/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
</configuration>

Ответы [ 2 ]

0 голосов
/ 14 января 2010

Ну, базовая HTTP-привязка использует SOAP 1.1 под капотом, который, в свою очередь, использует тип контента text/xml. Более новая привязка WS-HTTP использует SOAP 1.2, который использует application/soap+xml тип содержимого. WCF жалуется, потому что кажется, что ваш сервис настроен на использование базовой HTTP-привязки с типом контента application/soap+xml, который не будет работать.

Возможно, вы можете попробовать добавить http:// перед localhost в адресе или просто использовать TS для адреса и указать http://localhost:9999 в элементе базового адреса, например, внутри элемента <service>:

<baseAddress>
   <add baseAddress="http://localhost:9999/" />
</baseAddress>
0 голосов
/ 14 января 2010

Ошибка, по-видимому, говорит о том, что она пытается использовать SOAP 1.2 вместо wsHttpBinding, но я пока не знаю, почему (должно быть, нехватка кофе). Это может помочь, если вы разместили соответствующие части вашего конфигурационного файла или загрузите его куда-нибудь, если он слишком большой

Когда вы просматриваете http://localhost:9999/TS/?WSDL, что вы получаете?

У вас настроена конечная точка mex (обмен метаданными)? См. здесь для примера конфигурации.

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