Я создаю Asp.net Webapi для наших услуг. С другой стороны, мне нужно извлечь некоторые данные из существующей службы WCF.
Я создаю веб-ссылку в моем проекте asp.net webapi. Но, похоже, прокси не сгенерирован.
Я пробовал с VS 2012 RC, а затем с VS 2010. Я не могу ссылаться на него из моей модели/контроллера в любом месте проекта. Есть ли другой способ создания прокси в MVC webapi. Я не знаю, что не так.
Должен ли он что-то делать, например, я не могу использовать службу wcf из службы отдыха?
Что мне здесь не хватает.
Спасибо.
Ответ 1 · рейтинг 3 · Martin4ndersen
Попробуйте добавить ссылку на службу, а не на веб-ссылку, которая используется для устаревших веб-служб ASP.NET (ASMX).
Я только что попробовал это, и он работает так, как ожидалось. Вот что я сделал:
- Создал новое веб-приложение ASP.NET MVC 4 и выбрал шаблон проекта веб-API.
- В решение добавлен проект приложения-службы WCF. Не забудьте создать его, прежде чем добавлять в него ссылку на службу.
- В проекте веб-APi я добавил ссылку на службу WCF.
Заменил код в 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>
Ответ 2 · рейтинг 1 · sanjay
Если ссылка на вашу службу добавлена, но файл reference.cs сгенерирован пустым, это может быть проблемой из-за конфликта типов. Следующее обходное решение сработало для меня.
Чтобы исправить это, щелкните правой кнопкой мыши ссылку на службу, выберите "Настроить ссылку на службу". На экране конфигурации снимите флажок "Повторно использовать типы в сборках, на которые ссылаются". Он должен автоматически обновлять ссылку на службу, если не обновлять принудительно.
Это должно правильно сгенерировать файл reference.cs.