簡體   English   中英

ASP.Net Web API請求URI錯誤

[英]ASP.Net Web API Request URI Error

我有一個通常可以正常運行的ASP.Net Web API。 我有一個執行GET請求的Winforms客戶端應用程序。 客戶端應用程序在我們的公司網絡上運行(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;
        }
    }

我沒有答案為什么會這樣,但是我在Web表單中遇到了類似的問題(不是Win Forms客戶端)。 這可以通過使用基本的meta標簽解決。我不確定是否能解決您的問題,但是您可以嘗試一下。

您可以使用HttpClient這樣的基地址(如果您尚未這樣做):

    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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM