HttpClient.GetAsync,无效的URI异常

3
下面提到的代码无法正常工作。在GetAsync中我收到以下异常:

无效的URI:无法确定URI的格式。

然而,如果我注释掉apiClient.BaseAddress并在apiClient.GetAsync中指定完整的URI,则可以正常工作!
请问有人能解释一下原因吗? DEV环境: VS2012,.NET 4.5,C#,ASP.NET WebForms 代码:
private async Task WebAPICall()
{
    using (var apiClient = new HttpClient())
    {
        apiClient.BaseAddress = new Uri("http://localhost:9000/");
        apiClient.DefaultRequestHeaders.Accept.Clear();
        apiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        apiClient.Timeout = new TimeSpan(0, 0, 30);

        try
        {
            HttpResponseMessage apiResponseMsg = await apiClient.GetAsync(new Uri("api/products/" + txtProductID.Text.Trim()));
            string strResponse = await apiResponseMsg.Content.ReadAsStringAsync();
            Response.Write(strResponse);
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

    } //using (var apiClient = new HttpClient())
} //private async Task WebAPICall()

提供 [MCVE] 对于“为什么会出现这个错误”非常重要。即,在这种情况下,应该是一行 var uri = new Uri("api/products/" + "productId");(我也明白可能很痛苦地清楚问题所在 - 但“最小化”是重要的部分)。 - Alexei Levenkov
如果你的问题更多地涉及到使用BaseAddress(比如https://dev59.com/jmAg5IYBdhLWcg3wlLqh),你可能需要澄清一下。 - Alexei Levenkov
@AlexeiLevenkov,我提供了完整的方法,因为我看到很多人在询问它。 - Ashish
1个回答

2

在StackOverflow上另一篇帖子的帮助下找到了问题所在。感谢@Alexei提供的URL。

更改了URI字符串,现在已经正常运行。

HttpResponseMessage apiResponseMsg = await apiClient.GetAsync("api/products/" + txtProductID.Text.Trim());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接