#wcf
#wcf
Вопрос:
Хорошо, позвольте мне сначала изложить некоторые факты:
- Это веб-служба, которая работает. Существует несколько конечных точек .svc, все из которых работали. Прямо сейчас, хотя есть один, которого нет, это означает, что я могу вызывать к нему методы, когда я использую сервис через другой проект, но в результате я продолжаю получать null обратно.
- Код для методов в этой службе, которая постоянно отправляет обратно null, НЕ ИЗМЕНИЛСЯ
- Я действительно возился с конфигурацией конечной точки, указывая ее на пару разных серверов. Я попробовал исходный сервер, на который он также был указан. Независимо от того, что я могу нормально обновить службу, но даже если я верну ее к старому пути конечной точки, я все равно получаю null обратно из своих модульных тестов при тестировании вызовов этой службы. Модульные тесты выполняются в проекте, который, конечно, использует сервис
- Я проверил app.config и web.config для самой службы. Насколько я вижу, все выглядит нормально…но опять же, я новичок в WCF
Я знаю, что это довольно общее, но я ищу некоторые рекомендации о том, с чего начать поиск, чтобы понять, почему я внезапно получаю null обратно. Сохраненная процедура, лежащая в основе этих методов, не изменилась. Опять же, эти вызовы методов работали в какой-то момент времени на прошлой неделе, но сейчас это не так.
Ответ №1:
Это очень общее, но есть несколько вещей, которые нужно попробовать…
- Попробуйте обновить ссылку на службу, чтобы убедиться, что у вас самая последняя версия ваших прокси-объектов
- Вы пробовали отлаживать внутри своей службы и проверяли, возвращается ли ожидаемое возвращаемое значение из службы до того, как клиент его получит?
- Вы перехватываете все исключения в службе, а затем возвращаете результирующий объект, или вы позволяете исключениям проходить? Если вы позволите им провалиться, канал WCF может быть поврежден.
- Попробуйте использовать Fiddler и посмотрите, являются ли конечные точки, которые, по вашему мнению, должны вызываться, и действительно ли объект ответа равен null.
- Используйте старый школьный трюк и запишите результат в файл на сервере непосредственно перед возвращением к клиенту. Это поможет вам узнать, является ли это проблемой сериализации между сервером и клиентом. Возможно, вам даже потребуется выполнить запись в файл сразу после получения вызова службой, чтобы убедиться, что ваш клиент подключается.
Что вам действительно нужно сделать, так это начать с отладки внутри вашего сервиса и пошагового выполнения кода там. Убедитесь, что SPROC возвращает то, что вы ожидаете, и тогда не будет введена ошибка среды.
Комментарии:
1. # 2 У меня есть модульные тесты, которые уже были внутри фактического сервисного решения, и теперь они терпят неудачу. Ранее они не терпели неудачу. Они терпят неудачу, когда null возвращается из модульного теста при вызовах метода для этой службы.
2. # 3 Я новичок в этой команде, но они отправляют обратно пользовательский объект status out для отправки статуса вызова…
3. # 4 хорошая идея, позвольте мне попробовать. Мне также сказали попробовать тестовый клиент WCF, чтобы сделать что-то подобное … и для тестирования вызовов?
4. Да, тестовый клиент WCF тоже будет работать. Это приведет к удалению вашей клиентской переменной. Интересно, не может ли клиент для начала подключиться к серверу. Как вы устанавливаете адрес конечной точки? Вы ссылаетесь на переменную name в XML-файле приложения или программно устанавливаете адрес конечной точки?
5. Кроме того, просто подход старой школы, запишите результат в файл на сервере, прежде чем возвращаться к клиенту. Это определенно скажет вам, является ли это проблемой сериализации между сервером и клиентом или чем-то еще.
Ответ №2:
Когда у вас возникают странные проблемы с WCF, первое, что нужно сделать, это настроить трассировку WCF. Это очень мощный инструмент. Вы даже можете видеть содержимое сообщений.
Вот официальный документ по этому вопросу: настройка трассировки WCF
Комментарии:
1. Да, я сделал это некоторое время назад, но это не сильно помогло в решении этой проблемы.