Не может ссылаться на систему.ServiceModel.Исключение EndpointNotFoundException

#c# #visual-studio-2008 #exception-handling

#c# #visual-studio-2008 #исключение

Вопрос:

Я пытаюсь перехватить это исключение:

 System.ServiceModel.EndpointNotFoundException
  

Но visual Studio не находит его. В конце нет маленькой красной черточки, и если я попытаюсь выполнить using в System.ServiceModel пространстве имен, в системе не будет ServiceModel. Хотя из системы.Пространство имен ServiceModel оно находится в библиотеке классов .Net Framework.

Есть причина, по которой я не могу ссылаться на это?

Я получаю сообщение об ошибке, когда мое приложение не может получить доступ к моему веб-сервису.

Редактировать: Целевой фреймворк: клиентская платформа 3.5 не проверена.

Редактировать: я добавил систему.Пространство имен ServiceModel, но, по-видимому (в то время это было не очевидно), я добавил его в библиотеку классов вместо программы. В этом и заключалась вся проблема. Когда мне предложили закрыть и запустить новый проект, добавить библиотеку, это сработало, поэтому я вернулся и посмотрел. При повторном открытии VS был другим, и было очевидно, что я добавил System.ServiceModel относится к библиотеке, а не к основному проекту.

Спасибо за помощь!

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

1. Вы ориентируетесь на версию фреймворка с клиентским профилем? Возможно, этот класс там не предусмотрен.

2. Да? Я не знаю, что вы имеете в виду, «ориентируясь на профиль клиента».

3. Версии 3.5 и 4.0 .NET FW имеют специальную версию «Client Profile», которая, как предполагается, обеспечивает меньшую загрузку. Это делается путем удаления менее используемых частей фреймворка. Вы можете изменить, на какую версию FW вы ориентируетесь, в свойствах вашего проекта. Я не уверен, исключен ли этот класс в профиле клиента, но это может быть, и это, безусловно, может объяснить вашу проблему.

4. Хорошо, я вижу флажок для подмножества фреймворка только для клиента, но он понятен / не установлен.

5. Ну, орехи, это был самый простой ответ. Если вы определенно добавили ссылку и вы определенно нацелены на .NET 3.0 , то это будет работать. Я только что создал новый проект, ориентированный на .NET 3.5 (полный) в версии 2008, добавил ссылку на System.ServiceModel , и все работает, как ожидалось. Что-то еще не так. Попробуйте посмотреть, можете ли вы сделать то же самое в новом, пустом проекте.

Ответ №1:

Вы пробовали добавить ссылку на сборку System.ServiceModel в свой проект?

Редактировать На всякий случай, если это проблема, вот инструкции о том, как это сделать:

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

1. Либо я только что добавил это, либо оно уже было там — в любом случае, это не помогает.

Ответ №2:

Два требования:

  • Добавьте ссылку на System.ServiceModel.dll
  • Цель .NET framework 3.0 или выше

Последнее, вероятно, является вашей проблемой. Проект Свойства, вкладка приложения, настройка целевой среды в C # IDE.

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

1. Обновите свой вопрос этой важной информацией.

Ответ №3:

(Добавлено по просьбе пользователя, в ответ на обсуждения в комментариях.)

Если вы определенно добавили ссылку и вы определенно нацелены на .NET 3.0 , то это будет работать.

Я только что создал новый проект, ориентированный на .NET 3.5 (полный) в VS 2008, добавил ссылку на System.ServiceModel , и все работает точно так, как ожидалось.

Должно быть, что-то еще не так. Попробуйте посмотреть, можете ли вы сделать то же самое в новом, пустом проекте.

Ответ №4:

Добавьте ссылку на SYSTEM.SERVICEMODEL

У меня была такая же проблема, у меня был профиль клиента VS2012 win forms project .NET 3.5. Я хотел интегрироваться с UPS API через консольный проект VS2010 .NET 3.5, я взломал его, взял DLL и страницу pertianent .cs… он использовал System.ServiceModel но мой проект VS2012 этого не понял…

Добавление ссылки на SYSTEM.SERVICEMODEL решило это для меня

  • версия: 3.0.0.0
  • путь: C:Program Файлы (x86) Ссылочные сборки Microsoft Framework.NetFramework v3.5 Profile Client System.ServiceModel.dll