#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"
его . Это не имеет ничего общего с HttpClient5. @DanielA. Белый Он работает с почтальоном, так это проблема с DNS ??
Ответ №1:
Наконец, я должен помочь себе, это может помочь кому-то другому, вам нужно убедиться, что вы зарегистрировали все конечные точки в OWIN, я зарегистрировал его на полное имя, и это сработало.
var options = new StartOptions();
options.Urls.Add($"https://myvdi.swq.tst.local:portno/source/api/token");
WebApp.Start<Startup>(options);