Подтвердить что ты не робот

WCF - Не удается разрешить символ [WebGet] - что я делаю неправильно?

Я работаю над проектом REST WCF, и когда я реализую следующий код, он жалуется, что он не может разрешить класс WebGet? Что мне не хватает?

Я попытался импортировать пространство имен System.ServiceModel.Web, но оно не может найти его, даже если я ссылаюсь на него. "Web" в System.ServiceModel.Web не регистрируется, когда я регистрирую его в инструкции using поверх моего кода.

В принципе, что мне нужно для реализации таких концепций REST WCF, как WebGet, WebInvoke, UriTemplate и т.д.

ОБНОВЛЕНИЕ:. После некоторой обратной связи и размышления об этом немного больше, что я сделал, кажется, что DLL (System.ServiceModel и System.ServiceModel.Web) не возникают через окно "Добавить ссылку", когда я иду, чтобы добавить ссылку на проект. Когда я впервые запустил проект, FYI, так как эти сборки сначала не появились, я пошел "искать" их и скопировал их во временную папку, чтобы я мог ссылаться на них, и, следовательно, я думаю, что у меня возникают проблемы с решением проблемы, Итак, теперь, когда я нахожусь на этом этапе, как я могу заставить свой VS распознавать/регистрировать эти DLL файлы DLL WCF? Спасибо!

ОБНОВЛЕНИЕ: Я считаю, что я обновляюсь во всем: разработка на VS 2008 SP1 - я пытаюсь загрузить последние версии SP, загрузив REST Preview 2 Starter Kit, разработав версию 3.5 Framework, пытаясь создать слой REST WCF, который в конечном итоге будет потреблен клиентом 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();
    }

}

Любой совет будет очень благодарен.

4b9b3361

Ответ 1

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

Я сделал это:

  • Удалить System.Service.Web из ссылок
  • Построить
  • Очистить проект
  • Добавить System.Service.Web в список литературы
  • Построить

.. и VS нашел это??

Ответ 2

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

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

Ответ 3

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

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

НТН

Ответ 4

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

а не: Профиль клиента .NET Framework 4 или любая более низкая версия .NET.

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

- DBJ

Ответ 5

  • щелкните правой кнопкой мыши по имени проекта и выберите "Свойства".
  • изменить целевую структуру на .NET Framework 4.
  • щелкните правой кнопкой мыши ссылку и выберите Добавить ссылку.
  • Затем вы можете увидеть System.ServiceModel.Web.

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

Ответ 6

используя System.ServiceModel.Web;

Ответ 7

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

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

System.ServiceModel.Web

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

using System.ServiceModel.Web;

и все решили!;)

Ответ 8

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

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

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

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

Инструменты → Параметры → Resharper Ultimate → Параметры → Окружающая среда → Общие → Очистить кеши

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