Как перейти в службу WCF Rest из .Сетевое клиентское приложение?

#wcf #visual-studio-2010 #rest

#wcf #visual-studio-2010 #rest

Вопрос:

Я разрабатываю решение в Visual Studio 2010, в котором есть служба WCF RESTful, размещенная в IIS (на данный момент фактически Cassini), и прототип ASP.NET Клиент MVC. У меня все подключено, но я не могу подключиться к службе при отладке клиента.

У меня есть класс «service agent», который используется моими контроллерами для работы со службой. Агент службы использует следующий код для выполнения реальных вызовов службы:

 var factory = new WebChannelFactory<IServiceContract>("theEndpointConfigName");
var channel = factory.CreateChannel();

var result = channel.CallTheService();
  

Я могу установить точку останова в последней строке, но нажатие F11 не приводит к переходу в службу, как я ожидал.

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

Чего мне не хватает?

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

1. Вы подключили VS к рабочему процессу IIS?

2. Мне никогда раньше не приходилось работать со службой WCF в рамках одного и того же решения. Это разница, потому что служба использует REST?

Ответ №1:

Отладчик Visual Studio не может перейти границу процесса. Вы можете подключиться либо к клиентскому процессу, либо к серверному процессу, но не к обоим одновременно.

Вот несколько предложений:

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

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

1. К сожалению, предполагается, что это быстрое и грязное подтверждение концепции, поэтому на данный момент я действительно не следую TDD. Я сделаю это, когда (если) мы приступим к настоящей разработке решения. чего я не понимаю, так это того, что у меня нет проблем с подключением к своим сервисным операциям при использовании WCF с SOAP. Проблема в REST?

2. И я также думаю о будущем. Возможность подключения к службе — отличная возможность при устранении неполадок.

3. Честно говоря, я никогда не заморачивался «быстрой и грязной» стадией разработки сервиса, я всегда иду прямо в IIS и запускаю модульные тесты в первый день, поэтому я не могу предложить никаких советов на этот счет, извините.

Ответ №2:

Я действительно наткнулся на ответ. Я благодарю Кристиана за то, что он бессознательно направил меня в правильном направлении. Ваше заявление о том, что отладчик подключается к одному или другому процессу, но не к обоим, заставило меня задуматься. Мне пришло в голову, что веб-проект был установлен в качестве единственного начального проекта в моем решении. Ради интереса я решил попробовать добавить свое приложение-службу WCF в список запуска. Виола! Это все, что потребовалось!

Итак, теперь у меня запускаются оба проекта. Я изменил настройку в своем приложении-службе WCF, чтобы оно не отображало страницу при запуске. И теперь все работает так, как я и ожидал.

Спасибо за подсказку в правильном направлении!

Ответ №3:

Взгляните на приведенную ниже статью CodeProject, чтобы получить представление о том, как отлаживать службу WCF REST.

http://www.codeproject.com/Tips/213007/Debug-WCF-REST-Service