ASP.Net Web API请求URI错误

本文关键字:URI 错误 请求 API Net Web ASP | 更新日期: 2023-09-27 18:02:23

我有一个ASP。Net Web API通常工作得很好。我有一个Winforms客户端应用程序做GET请求。客户端应用程序在我们的公司网络上运行(API作为Azure网站托管)。偶尔,不一致的是,我所做的HttpClient调用在我的GET调用前添加了似乎是公司的url。

示例:我尝试调用发送一个HttpClient请求到以下URL: 'http://xyzxyz.azurewebsites.net/api/user/1'

,但实际的请求是:

'http://usgaabc1iru01/B0000D0000N0001F0000S0000R0004/http://xyzxyz.azurewebsites.net/api/user/1'

这显然会导致错误。

我已经问过我们的IT部门可能发生了什么,他们不知所措。希望有人能给我指个方向。

编辑:

下面是我使用的代码。首先,我有一个静态方法,我调用所有我调用API来获得HttpClient(这是尴尬/糟糕的也许):
public static HttpClient GetHttpClient()
    {
                var credentials = new NetworkCredential(GlobalVariables.CurrentUser.UserName, GlobalVariables.CurrentUser.Password);
                HttpClientHandler handler = new HttpClientHandler();
                handler.UseDefaultCredentials = false;
                handler.Credentials = credentials;
                HttpClient client = new HttpClient(handler);
                client.BaseAddress = new Uri(PublicClasses.GlobalVariables.BaseUriString);
                client.DefaultRequestHeaders.Accept.Add(
                        new MediaTypeWithQualityHeaderValue("application/json"));
                GlobalVariables.CredentialedHttpClient = client;
            }
            return GlobalVariables.CredentialedHttpClient;
        }
   }
下面是我使用的一个简单的GET调用:
public static List<Project> GetAllProjects()
    {
        try
        {
            HttpClient client = GetHttpClient();
            HttpResponseMessage response = client.GetAsync("api/project").Result;  // Blocking call!
            if (response.IsSuccessStatusCode)
            {
                var projects = response.Content.ReadAsAsync<IEnumerable<Project>>().Result;
                return (List<Project>)projects; 
            }
            else
            {
                Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
                return null;
            }
        }
        catch (Exception)
        {
            throw;
        }
    }

ASP.Net Web API请求URI错误

我没有答案,为什么会发生这种情况,但我遇到了类似的问题在一个web表单(不是一个双赢的形式客户端)。这是通过使用基本元标记来解决的。我不确定这是否解决了你的问题,但你可以试一试。

你可以这样使用HttpClient的base address(如果你还没有这样做的话):

    using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://xyzxyz.azurewebsites.net/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    HttpResponseMessage response = await client.GetAsync("api/user/1");
    if (response.IsSuccessStatusCode)
    {
        //add your code
    }
}