【问题标题】:HttpClient postasync request not working with fully qualified hostname, but works using IP address for windows serviceHttpClient postasync 请求不能使用完全限定的主机名,但可以使用 Windows 服务的 IP 地址
【发布时间】:2021-10-07 12:37:24
【问题描述】:

这很奇怪,我有 C# HttpClient PostAsync 方法,它适用于 IP 并且没有完全限定的主机名,但是它不适用于完全限定的主机名,尽管它适用于邮递员,知道问题出在哪里.

例如;如果我输入 IP:portname 或 myvdi:postname 它可以工作 但我输入 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。

提琴手

【问题讨论】:

  • 确切的例外是什么?您也可以与我们分享 StackTrace 吗?
  • dns 是否解析到相同的 ip 地址?
  • @PeterCsala 就像我说没有错误,响应说“404 Not Found”
  • 404 表示 URL 错误,而不是主机。服务器收到了 HTTP 请求,但无法识别 /SourceCtl/source/api/token"。这与HttpClient无关
  • @DanielA.White 它适用于邮递员,所以是 DNS 问题吗??

标签: c# owin dotnet-httpclient


【解决方案1】:

最后,我必须帮助自己,这可能对其他人有帮助,您需要确保在 OWIN 中注册所有端点,我将其注册为一个完全限定的名称并且它有效。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多