Веб-служба ASP.net и intellisense

Итак, у меня есть проект веб-сайта ASP.Net. Проект находится на сервере в сети, к которому Visual Studio 2008 получает доступ через общий доступ к файлам.

В проекте веб-сайта я добавляю веб-ссылку на ранее созданный веб-сервис.
Я могу использовать этот веб-сервис через приложения winforms без каких-либо проблем.

Но когда я пытаюсь сослаться на веб-службу в моем коде, intellisense не появляется, а имя службы получает красное подчеркивание в Visual Studio и говорит: «Тип или имя пространства имен 'IMWebService' не может быть найдено, если вам не хватает ссылки на сборку или директиву using? "

Однако, если я знаю точную сигнатуру метода веб-службы, я могу ввести ее, сохранить на веб-сервере, и она будет работать нормально. Например:

bool test = Contractor.CheckLogin(email, password);

Как заставить мою Visual Studio распознавать службу так же, как это делает веб-сайт?

Ответов (7)

Решение

Я столкнулся с этой проблемой, изолированной только для классов, созданных с помощью «Веб-ссылок». Одним из решений было очистить папки bin и obj и перезапустить Visual Studio. Это не всегда срабатывало, так что, возможно, это не «решение», но иногда Intellisense подбирал после этого. Я также попытался открыть автоматически сгенерированный код для веб-службы и изменить его, а затем сохранить. Похоже, это подтолкнуло Intellisense к просмотру этого файла. Все остальное, что я делал, казалось, не имело эффекта.

Проверьте пространства имен, возможно, в этом проблема. Если вы вводите полное имя, найдите под ним маленькое красное поле.

Если он не работает, возможно, вы сломали Intellisense, потому что я использую его каждый день, и он работает.

Поместите следующую строку в начало файла кода:

using Contrator;

Если Visual Studio не предоставляет intellisense, но код компилируется при использовании полного имени, вы можете быть уверены, что добавление пространства имен в оператор using решит проблему.

Если у вас нет пространства имен, указанного в верхней части файла, IDE не знает, как разрешить тип.

Вы можете попробовать вытащить автоматически сгенерированный код для клиента веб-сервиса, который VS делает для вас, из временной области и добавить его в свой фактический проект.

Чтобы сузить круг проблемы:

  • Проверяли ли вы политику доступа к коду при использовании проектов VS по пути UNC?
  • Получаете ли вы какие-либо предупреждения об открытии ненадежного кода из общей папки?
  • У вас будет такое же поведение, если вы запустите весь свой код локально?

Используйте проект веб-приложения вместо веб-сайта.

Файл -> Создать -> Проект -> C# -> Веб -> Веб-приложение ASP.NET

Это решит вашу проблему, а также другие проблемы.

Проект веб-сайта старый и не работает.

как только я столкнулся с той же проблемой, я просто щелкаю правой кнопкой мыши по папке refrence в проводнике проекта в Visual Studio, выбираю Refresh, а затем через 2 или 3 минуты появляется intelisense и работает нормально .. Я думаю, что для этого нужно время чтобы загрузить схему и информацию о классе веб-службы или что-то в этом роде.