Использование службы WCF из Asp.net WebApi

Я создаю Asp.net Webapi для наших услуг. С другой стороны, мне нужно извлечь некоторые данные из существующей службы WCF.

Я создаю веб-ссылку в моем проекте asp.net webapi. Но, похоже, прокси не сгенерирован.

Я пробовал с VS 2012 RC, а затем с VS 2010. Я не могу ссылаться на него из моей модели/контроллера в любом месте проекта. Есть ли другой способ создания прокси в MVC webapi. Я не знаю, что не так.

Должен ли он что-то делать, например, я не могу использовать службу wcf из службы отдыха?

Что мне здесь не хватает.

Спасибо.


person Tabish Sarwar    schedule 10.07.2012    source источник


Ответы (2)


Попробуйте добавить ссылку на службу, а не на веб-ссылку, которая используется для устаревших веб-служб ASP.NET (ASMX).

Я только что попробовал это, и он работает так, как ожидалось. Вот что я сделал:

  1. Создал новое веб-приложение ASP.NET MVC 4 и выбрал шаблон проекта веб-API.
  2. В решение добавлен проект приложения-службы WCF. Не забудьте создать его, прежде чем добавлять в него ссылку на службу.
  3. В проекте веб-APi я добавил ссылку на службу WCF.
  4. Заменил код в ValuesController.Get(int id) на

    public string Get(int id)
    {
        var serviceReference1 = new ServiceReference1.Service1Client();
        return serviceReference1.GetData(id);
    }
    

При просмотре

http://localhost:<port>/api/values/2

я получаю

<?xml version="1.0" encoding="utf-8"?><string>You entered: 2</string>
person Martin4ndersen    schedule 11.07.2012
comment
Я добавляю ссылку на службу в свой проект Asp.net WebApi, но не могу ссылаться на нее ни в одной части проекта. Это очень странное поведение. Я сомневаюсь, что обвиняю генерацию WSDL, потому что я могу ссылаться на Service в других проектах, кроме этого проекта WebApi. - person Tabish Sarwar; 11.07.2012
comment
Добавление ссылки на службу завершается без ошибок? Находится ли вновь созданная ссылка на службу в папке «Ссылки на службы» в обозревателе решений? - person Martin4ndersen; 12.07.2012
comment
Да встречается. Даже я могу обновить сервис. Я заметил, что в web.config нет записей, которые мы использовали для службы WCF при использовании от клиента. Я не могу получить к нему доступ ни в моем модальном, ни в контроллере. Я пытался просмотреть его в браузере объектов. Там его тоже не видно. - person Tabish Sarwar; 12.07.2012
comment
Какие using утверждения вам нужны, чтобы получить ServiceReference1??? Я не могу найти его - любая помощь приветствуется! Я пытаюсь получить службу wcf из веб-приложения ASP.NET-MVC4. - person Andriy Drozdyuk; 02.10.2012

Если ссылка на вашу службу добавлена, но файл reference.cs сгенерирован пустым, это может быть проблемой из-за конфликта типов. Следующее обходное решение сработало для меня.

Чтобы исправить это, щелкните правой кнопкой мыши ссылку на службу, выберите «Настроить ссылку на службу». На экране конфигурации снимите флажок «Повторно использовать типы в сборках, на которые ссылаются». Он должен автоматически обновлять ссылку на службу, если не обновлять принудительно.

Это должно правильно сгенерировать файл reference.cs.

person sanjay    schedule 06.08.2014