在调用外部Web API时,使用路径'api / External'和方法'GET'进行多个操作

时间:2016-04-06 15:18:06

标签: c# .net asp.net-web-api async-await

我正在尝试在我的Web API应用程序中调用外部托管的Web API。 在尝试使用Get()方法时,一切似乎都能正常工作。 但是,当我尝试实现$job_link_url时,我收到了错误:

  

使用路径'api / External'和方法'GET'的多个操作。

我的控制器出了什么问题?

Get(int value)

我也尝试过以下方法,这似乎也引发了同样的错误:

public class ExternalController : ApiController
{
    static string _address = "http://localhost:00000/api/Values";
    private string result;

    // GET api/values
    public async Task<IEnumerable<string>> Get()
    {
        var result = await GetExternalResponse();

        return new string[] { result, "value2" };
    }

    private async Task<string> GetExternalResponse()
    {
        var client = new HttpClient();
        HttpResponseMessage response = await client.GetAsync(_address);
        response.EnsureSuccessStatusCode();
        var result = await response.Content.ReadAsStringAsync();
        return result;
    }

    public async Task<string> Get(int value)
    {
        var result = await GetExternalResponse();

        return result;
    }
}

1 个答案:

答案 0 :(得分:1)

当你这样做时

获取api / External / {id}

由于web api config中定义的默认路由,web api不确定是否调用不带参数的Get方法或带参数的Get方法

我建议使用属性路由来解决您的问题

  [Route("api/External/Get")]
  public async Task<IEnumerable<string>> Get()

  [Route("api/External/Get/{id}")]
  public async Task<string> Get(int value)