#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