Запрос HttpClient postasync не работает с полным именем хоста, но работает с использованием IP-адреса службы Windows

#c# #owin #dotnet-httpclient

Вопрос:

Это странно, у меня есть HttpClient PostAsync метод C#, он работает с IP и без полного имени хоста, однако он не работает с полным именем хоста, хотя он работает с почтальоном, любая идея, в чем проблема.

Например; если я ввожу IP:имя порта или myvdi:имя поста, это работает, но я ввожу myvdi.swq.tst.local, это не работает и выдает ошибку «Метод не найден».

Я повторяю, что с почтальоном проблем нет, оба случая работают в «почтальоне».

 var client = new HttpClient();
var requestData = new List<KeyValuePair<string, string>>
{
    new KeyValuePair<string, string>("grant_type", "password"),
    new KeyValuePair<string, string>("username", "myusername"),
    new KeyValuePair<string, string>("password", "mypassword")
};

var payload = new FormUrlEncodedContent(requestData);

payload.Headers.ContentType =
    new MediaTypeHeaderValue("application/x-www-form-urlencoded") { CharSet = "UTF-8" };

var response = client.PostAsync(new Uri("https://myvdi.swq.tst.local:8096/SourceCtl/source/api/token"), payload).ConfigureAwait(false).GetAwaiter().GetResult();
 

URL-адрес-это служба Windows, и он настроен с помощью токена OWIN, поэтому сначала он вызывает OWIN.

Скрипач

введите описание изображения здесь

Комментарии:

1. Что является точным исключением? Можете ли вы также поделиться с нами трассировкой стека?

2. соответствует ли dns одному и тому же ip-адресу?

3. @PeterCsala Как я и говорил, ошибок нет, в ответе написано «404 Не найдено».

4. 404 означает, что неверен URL-адрес, а не хост. Сервер получил HTTP — запрос, но не распознает /SourceCtl/source/api/token" его . Это не имеет ничего общего с HttpClient

5. @DanielA. Белый Он работает с почтальоном, так это проблема с DNS ??

Ответ №1:

Наконец, я должен помочь себе, это может помочь кому-то другому, вам нужно убедиться, что вы зарегистрировали все конечные точки в OWIN, я зарегистрировал его на полное имя, и это сработало.

     var options = new StartOptions();
    options.Urls.Add($"https://myvdi.swq.tst.local:portno/source/api/token");
        
    WebApp.Start<Startup>(options);