WCF - не удается разрешить символ [WebGet] - что я делаю не так? - PullRequest
23 голосов
/ 24 июня 2009

Я работаю над проектом 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 ]

30 голосов
/ 24 июня 2009

Вам нужно обратиться к DLL-библиотеке System.ServiceModel.Web.

Щелкните правой кнопкой мыши папку «Ссылки» в своем проекте и выберите «Добавить ссылку ...». Прокрутите вниз до System.ServiceModel.Web и нажмите «ОК».

26 голосов
/ 20 июня 2010

Всего лишь одна мысль: вы можете ориентировать свой проект на .Net Client Profile, который предоставляет ограниченные пространства имен. вам может понадобиться проверить настройки целевого фреймворка в свойствах вашего проекта.

Я сталкивался с тем, что в проекте WCF не было найдено System.ServiceModel.Web, пока я не изменил настройки фреймворка по умолчанию.

НТН

9 голосов
/ 06 октября 2009

Это случилось со мной тоже.

Я сделал это:

  1. Удалить System.Service.Web из списка ссылок
  2. Сложение
  3. Чистый проект
  4. Добавление System.Service.Web в список ссылок
  5. Сложение

.. а В.С. нашел его ??

8 голосов
/ 30 июня 2010

В разделе "Свойства проекта" убедитесь, что для вашей "целевой платформы" установлено: .NET Framework 4

и не: .NET Framework 4 Client Profile или любая более низкая версия .NET.

Также, если возможно, используйте VS 2010.

- DBJ

3 голосов
/ 08 декабря 2011
  1. щелкните правой кнопкой мыши имя проекта и выберите «Свойства».
  2. изменить целевую платформу на .NET Framework 4.
  3. щелкните правой кнопкой мыши на References и выберите Add Reference.
  4. И тогда вы можете увидеть System.ServiceModel.Web.

По умолчанию целевой платформой является .NET Framework 4 Client Profile, поэтому вы не можете найти System.ServiceModel.Web.

2 голосов
/ 09 апреля 2015

У меня была такая же проблема.

Я добавил эту недостающую ссылку:

System.ServiceModel.Web

и эта строка кода:

using System.ServiceModel.Web;

и все решено! ;)

1 голос
/ 02 сентября 2009

с использованием System.ServiceModel.Web;

0 голосов
/ 18 сентября 2016

В моем случае мой проект строился, несмотря на это предупреждение в представлении конструктора класса обслуживания. Не очень большая проблема, но все же довольно раздражающая. Понял, что это просто игра ReSharper - он не обновил свой внутренний кеш, когда VS автоматически добавлял ссылку на System.ServiceModel, когда я добавлял новую Службу WCF. Я отключил анализ кода в реальном времени в:

Инструменты -> Параметры -> Resharper Ultimate -> Параметры -> Проверка кода-> Настройки -> Включить анализ кода

Это восстановило встроенный анализ кода VS, и проблема была решена сразу.

Если вы предпочитаете продолжать использовать анализ кода ReSharper, очистите кеш в:

Инструменты -> Параметры -> Resharper Ultimate -> Параметры -> Среда -> Общее -> Очистить кеши

может также решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...