#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