C# 在Asp.Net API中使用多个Get()

C# 在Asp.Net API中使用多个Get(),c#,asp.net,api,C#,Asp.net,Api,嗨,我在这里尝试在我的API中有多个diff Get()请求,但我得到一个错误 已使用相同的参数类型定义了名为“Get”的成员 我应该如何改变这一点,以便我可以得到我的所有声明 public IEnumerable<appinfo> Get() { using (XamarinEntities entities = new XamarinEntities()) return entities.appinfoes.ToLi

嗨,我在这里尝试在我的API中有多个diff Get()请求,但我得到一个错误

已使用相同的参数类型定义了名为“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);
    }
public IEnumerable Get()
{
使用(xamarinenties entities=new xamarinenties())
返回entities.appinfoes.ToList();
}
公共IEnumerable Get()
{
返回新字符串[]{“id”、“fname”、“lname”、“phone”、“company”、“approveduser”};
}
公共应用信息获取(字符串电子邮件)
{
使用(xamarinenties entities=new xamarinenties())
返回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);
}
[HttpGet]
[路线(“/实体”)]
公共IEnumerable GetEntities()
{
使用(xamarinenties entities=new xamarinenties())
返回entities.appinfoes.ToList();
}
[HttpGet]
[路线(“/properties”)]
公共IEnumerable GetProperties()
{
返回新字符串[]{“id”、“fname”、“lname”、“phone”、“company”、“approveduser”};
}
[HttpGet]
[路线(“/appinfo”)]
公共appinfo GetAppInfo(字符串电子邮件)
{
使用(xamarinenties entities=new xamarinenties())
返回entities.appinfoes.FirstOrDefault(e=>e.email==email);
}

您可以使用
路由
属性定义访问每个方法的唯一URL。

您的方法需要具有唯一名称或具有唯一签名的名称(即参数)。这里的简单解决方案是只为方法指定更具描述性的唯一名称:

[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);
}
[HttpGet]
[路线(“/实体”)]
公共IEnumerable GetEntities()
{
使用(xamarinenties entities=new xamarinenties())
返回entities.appinfoes.ToList();
}
[HttpGet]
[路线(“/properties”)]
公共IEnumerable GetProperties()
{
返回新字符串[]{“id”、“fname”、“lname”、“phone”、“company”、“approveduser”};
}
[HttpGet]
[路线(“/appinfo”)]
公共appinfo GetAppInfo(字符串电子邮件)
{
使用(xamarinenties entities=new xamarinenties())
返回entities.appinfoes.FirstOrDefault(e=>e.email==email);
}

您可以使用
Route
属性定义访问每个方法的唯一URL。

我当前访问我的第一个Get(),类似于localhost/api/xamarin/--如果我将其重命名为GetEntities,我还会以同样的方式访问吗?或者这就是为什么您要在上面的[Route…]中添加内容,以便让多个方法使用相同的URL?您不能让多个方法使用相同的URL(除非您使用不同的HTTP动词,如POST、PUT等)。框架如何知道要执行哪个方法?最终,您可以根据需要命名C#方法(我会选择一些描述性的名称),然后使用
Route
属性,您可以为每个方法定义不同的URL。所有代码都在我的xamarin控制器中,因此api会命中localhost/api/xamarin-我是否应该创建一个单独的控制器,然后才能获得第二个Get()请求指向不同的url,如localhost/api/secondcontroller为什么不使用
Route
属性来定义url?使用这些属性,您可以将路由定义为类似于
localhost/api/xamarin/entities
localhost/api/xamarin/properties
localhost/api/xamarin/appinfo
。如果它在一台机器上工作,而不是在另一台机器上工作,则可能是本问题范围之外的另一个问题。服务器上的ASP.NET MVC版本可能有所不同?如果这是一个新应用程序,我强烈建议改用ASP.NET Core,这样可以避免这些问题。我当前访问我的第一个Get(),类似于localhost/api/xamarin/--如果我将其重命名为GetEntities,我还会以同样的方式访问吗?或者这就是为什么您要在上面的[Route…]中添加内容,以便让多个方法使用相同的URL?您不能让多个方法使用相同的URL(除非您使用不同的HTTP动词,如POST、PUT等)。框架如何知道要执行哪个方法?最终,您可以根据需要命名C#方法(我会选择一些描述性的名称),然后使用
Route
属性,您可以为每个方法定义不同的URL。所有代码都在我的xamarin控制器中,因此api会命中localhost/api/xamarin-我是否应该创建一个单独的控制器,然后才能获得第二个Get()请求指向不同的url,如localhost/api/secondcontroller为什么不使用
Route
属性来定义url?使用这些属性,您可以将路由定义为类似于
localhost/api/xamarin/entities
localhost/api/xamarin/properties
localhost/api/xamarin/appinfo
。如果它在一台机器上工作,而不是在另一台机器上工作,则可能是本问题范围之外的另一个问题。服务器上的ASP.NET MVC版本可能有所不同?如果这是一个新的应用程序,我强烈建议使用ASP.NETCore,这样可以避免这些问题。