Невозможно вызвать службу WCF напрямую (.NET 3.0) - PullRequest
0 голосов
/ 27 мая 2009

Я работаю с 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, где я получаю ответ при доступе к методам через браузер; тем не менее, я могу получить страницу «Вы создали сервис» только при доступе к сервису, но ничего из методов.

Ответы [ 4 ]

4 голосов
/ 28 мая 2009

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

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

0 голосов
/ 28 мая 2009

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

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

0 голосов
/ 28 мая 2009

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

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

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

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

0 голосов
/ 27 мая 2009

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

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

...