Привет, пытаюсь использовать несколько запросов diff Get () в моем API, но я получаю сообщение об ошибке
already defines a member called 'Get' with the same parameter types
Как мне изменить это, чтобы я мог все свои операторы Get
public IEnumerable<appinfo> Get()
{
using (XamarinEntities entities = new XamarinEntities())
return entities.appinfoes.ToList();
}
public IEnumerable<string> Get()
{
return new string[] { "id", "fname", "lname", "phone", "company", "approveduser" };
}
public appinfo Get(string email)
{
using (XamarinEntities entities = new XamarinEntities())
return entities.appinfoes.FirstOrDefault(e => e.email == email);
}





Ваши методы должны иметь уникальные имена или имена с уникальной подписью (то есть параметры). Простое решение - просто дать вашим методам уникальные имена, которые будут более наглядными:
[HttpGet]
[Route("/entities")]
public IEnumerable<appinfo> GetEntities()
{
using (XamarinEntities entities = new XamarinEntities())
return entities.appinfoes.ToList();
}
[HttpGet]
[Route("/properties")]
public IEnumerable<string> GetProperties()
{
return new string[] { "id", "fname", "lname", "phone", "company", "approveduser" };
}
[HttpGet]
[Route("/appinfo")]
public appinfo GetAppInfo(string email)
{
using (XamarinEntities entities = new XamarinEntities())
return entities.appinfoes.FirstOrDefault(e => e.email == email);
}
Вы можете использовать атрибут Route, чтобы определить уникальный URL-адрес для доступа к каждому методу.
У вас не может быть нескольких методов, использующих один и тот же URL (если вы не использовали разные HTTP-команды, такие как POST, PUT и т. д.). Как фреймворк узнает, какой метод выполнить? В конечном итоге вы можете называть методы C# как хотите (я бы выбрал что-нибудь описательное), а затем, используя атрибуты Route, вы можете определить разные URL-адреса для каждого метода.
весь код находится в моем XamarinController, поэтому api попадает в localhost / api / xamarin - должен ли я создать отдельный контроллер, чтобы я мог иметь мой второй запрос Get (), указывающий на другой URL-адрес, например localhost / api / secondController
Почему бы вам просто не использовать атрибуты Route для определения вашего URL-адреса? Используя атрибуты, вы можете определить свои маршруты как что-то вроде localhost/api/xamarin/entities, localhost/api/xamarin/properties и localhost/api/xamarin/appinfo.
Теперь я тебя понял! Это в основном то, о чем я спрашивал в своем комментарии, я просто плохо объяснил это.
Без проблем! Я надеюсь, что ваш API проживет долгую и благополучную жизнь.
Это работает на моем тестовом ПК, но когда я нажимаю на новый ПК и пытаюсь получить доступ, используя указанные выше маршруты, я получаю эту ошибку <? Xml version = "1.0" encoding = "ISO-8859-1"?> < Ошибка> <Message> Не обнаружен HTTP-ресурс, соответствующий URI запроса 'localhost: 8888 / api / Xamarin / properties '. </ Сообщение> <MessageDetail> На контроллере' Xamarin 'не обнаружено действий, соответствующих запросу. </MessageDetail> </Error>
Если он работает на одной машине, а не на другой, это, вероятно, другая проблема, выходящая за рамки этого вопроса. Может разница в версии ASP.NET MVC на сервере? Если это новое приложение, я настоятельно рекомендую вместо этого использовать ASP.NET Core, и вы избежите подобных проблем.
А - понял. Это, по крайней мере, дает мне отправную точку и некоторые идеи. Спасибо вам любезно
В настоящее время я обращаюсь к своему 1-му Get (), как этот localhost / api / xamarin / - если я переименую его в GetEntitities, я все равно буду получать доступ таким же образом? Или поэтому вы добавляете в [Маршрут ...] выше, чтобы несколько методов использовали один и тот же URL?