WCF - не удается разрешить символ [WebGet] - что я делаю не так?
Я работаю над проектом REST WCF, и когда я реализую следующий код, он жалуется, что не может разрешить класс WebGet? Что мне не хватает?
Я попытался импортировать пространство имен System.ServiceModel.Web, но он не может найти его, даже если я на него ссылался. "Веб" в System.ServiceModel.Web не регистрируется, когда я регистрирую его в операторе использования поверх моего кода.
В основном, что мне нужно для реализации таких концепций WCF REST, как WebGet, WebInvoke, UriTemplate и т. Д.?
ОБНОВЛЕНИЕ: После некоторой обратной связи и размышлений об этом немного больше, что я сделал, кажется, что DLL (System.ServiceModel & System.ServiceModel.Web) не появляются через окно "Добавить ссылку", когда я иду в добавить ссылку на проект. Когда я впервые запустил проект, к вашему сведению, поскольку эти сборки вначале не появлялись, я начал их искать и скопировал во временную папку, чтобы я мог ссылаться на них и, таким образом, я думаю, у меня возникли проблемы с разрешением., Итак, теперь, когда я нахожусь на этом этапе, как я могу заставить свою VS распознавать / регистрировать эти библиотеки WCF REST? Спасибо!
ОБНОВЛЕНИЕ: я думаю, что я в курсе всех событий: разработка на VS 2008 SP1 - я пытаюсь загрузить последние SP, скачал REST Preview 2 Starter Kit, разрабатывая на 3.5 Framework, пытаясь создать слой WCF REST, чтобы в конечном итоге быть использованным клиентом Silverlight 2.
Вот что у меня есть:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using UtilityClasses;
using Microsoft.ServiceModel.Web;
using Microsoft.Http;
namespace WcfRestService
{
[ServiceContract]
public interface IRestService
{
[OperationContract(Name = "Add")]
[WebGet(UriTemplate = "/")] // ** can't compile here **
int Add();
}
}
Любой совет будет с благодарностью.
8 ответов
Это случилось со мной тоже.
Я сделал это:
- Удалить System.Service.Web из списка литературы
- строить
- Чистый Проект
- Добавить System.Service.Web в список литературы
- строить
..и В.С. нашел это??
Вам нужно сослаться на DLL-файл System.ServiceModel.Web.
Щелкните правой кнопкой мыши папку "Ссылки" в вашем проекте и выберите "Добавить ссылку...". Прокрутите вниз до System.ServiceModel.Web и нажмите "ОК".
Всего лишь одна мысль: вы можете ориентировать свой проект на.Net Client Profile, который предоставляет ограниченные пространства имен. вам может понадобиться проверить настройки целевого фреймворка в свойствах вашего проекта.
Я сталкивался с тем, что с WCF-проектом, не найденным System.ServiceModel.Web, пока я не изменил настройки фреймворка по умолчанию.
НТН
В "свойствах проекта" убедитесь, что ваша "целевая структура" установлена на: .NET Framework 4
а не: .NET Framework 4 Client Profile или любая более низкая версия.NET.
Также, если возможно, используйте VS 2010.
--DBJ
- щелкните правой кнопкой мыши на имени проекта и выберите "Свойства".
- измените целевую платформу на.NET Framework 4.
- щелкните правой кнопкой мыши на References и выберите Add Reference.
- И тогда вы можете увидеть System.ServiceModel.Web.
По умолчанию целевой платформой является.NET Framework 4 Client Profile, поэтому вы не можете найти System.ServiceModel.Web.
У меня такая же проблема.
Я добавил эту недостающую ссылку:
System.ServiceModel.Web
и эта строка кода:
using System.ServiceModel.Web;
и все решено!;)
В моем случае мой проект строился, несмотря на это предупреждение в дизайнерском представлении класса обслуживания. Не очень большая проблема, но все же довольно раздражающая. Понял, что это просто игра ReSharper - он не обновил свой внутренний кеш при обращении к System.ServiceModel
был добавлен автоматически VS, когда я добавил новый сервис WCF. Я отключил анализ кода в реальном времени в:
Сервис -> Параметры -> Resharper Ultimate -> Параметры -> Проверка кода-> Настройки -> Включить анализ кода
Это восстановило встроенный анализ кода VS, и проблема была решена сразу.
Если вы предпочитаете продолжать использовать анализ кода ReSharper, очистите кеш в:
Сервис -> Параметры -> Resharper Ultimate -> Параметры -> Среда -> Общие -> Очистить кеши
может также разобраться в проблеме.