Невозможно вызвать службу WCF напрямую (.NET 3.0)

StackOverflow https://stackoverflow.com/questions/917663

  •  06-09-2019
  •  | 
  •  

Вопрос

Я работаю с WCF (VS2005, .Net 3.0) и хочу протестировать службу, вызывая ее напрямую через веб-браузер, а не из кода.

У меня есть один метод, украшенный вызовом атрибута OperationContract GetTest().У меня есть служба в файле .svc, к которому я могу получить доступ;однако, когда я захожу .../Test.svc/GetTest, появляется только пустой экран.

Вот web.config:

<system.serviceModel>
  <services>
    <service name="TestService" behaviorConfiguration="TestBehavior">
      <endpoint
        address=""
        binding="basicHttpBinding"
        contract="TestService.ITestService"></endpoint>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="TestBehavior">
        <serviceMetadata httpGetEnabled="true"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

Всякий раз, когда я пытаюсь установить точку останова в службе, она также не срабатывает.Есть идеи, где я ошибаюсь?Я привык к службам ASMX, где получаю ответ при доступе к методам через браузер;однако я могу получить страницу «Вы создали службу» только при доступе к службе, но ничего из методов.

Это было полезно?

Решение

WCF не предлагает опции «вызова из Интернета», которую раньше использовали службы ASMX.Почему?Это огромная дыра в безопасности и не лучший способ протестировать веб-сервис.

Один из вариантов — сделать так, как предложил @Yossi, и использовать инструмент тестирования службы Wcf.

Или, что еще лучше, напишите собственный клиент для использования вашего веб-сервиса.Это поможет вам справиться с теми же проблемами, с которыми столкнутся те, кто будет использовать ваш сервис, и поверьте мне, в WCF может быть довольно много таких зависаний.

Не поймите меня неправильно, WCF — это чертовски круто!Но есть над чем жонглировать, и если у вас новые шансы, вы ошибетесь.Даже ранние пользователи до сих пор не знают всех тонкостей WCF.

Другие советы

Рассмотрите возможность использования Инструмент тестирования службы Wcf для первоначального тестирования вашего сервиса (но на самом деле модульное тестирование — ваш друг :-)) (и да — вам понадобится конечная точка mex, по крайней мере, на начальном этапе)

Что касается отладки: подключены ли вы к правильному процессу, в котором размещается служба?вы скомпилировали символы отладки?если служба опубликована в IIS - совпадает ли опубликованный код с кодом в Visual Studio?

Вы пробовали использовать Мыльный интерфейс?Они предоставляют действительно отличный инструмент для тестирования веб-сервисов.У них даже есть бесплатная версия, которая работает как WebStart!

Также попробуйте установить конечную точку mex, см. ссылка на мсдн.

Взгляните на WebGetAttribute, для которого требуется .NET 3.5.

Это позволяет получать данные REST из веб-службы WCF.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top