【问题标题】:How can I specify the hostname in a call to a WCF service in .NET Core?如何在 .NET Core 中调用 WCF 服务时指定主机名?
【发布时间】:2017-08-25 05:28:27
【问题描述】:

我正在尝试调用 WCF 服务。我有以下限制:

  • 客户端无权访问 DNS
  • 客户端代码为 .NET Core,在 Linux 上运行
  • WCF 服务 (IIS) 要求客户端使用主机名
  • IP 地址发生变化,因此客户端在每次调用服务时都会获取最新的 IP 地址

基于this link,可以在标头中设置主机,但在.NET Core 中调用WCF 时无法指定标头。

我假设我应该做这样的事情来传递 host 标头中的主机名,但 WebOperationContext 在 .NET Core 中似乎不存在:

var svc = new ServiceClient(ServiceClient.EndpointConfiguration.BasicHttpBinding_IService,
    new EndpointAddress($"http://{GetLatestIP()}/Service.svc"));

using (new OperationContextScope(((ServiceClient)svc).InnerChannel))
{
    WebOperationContext.Current.OutgoingRequest.Headers.Add("host", "myurl");
    var response = svc.GetResponseAsync(request).Result;
}

知道如何使用 .NET Core 将标头传递给 WCF 服务吗?

【问题讨论】:

    标签: wcf .net-core


    【解决方案1】:

    尝试探索生成的 ServiceClient。它必须有指定远程服务器地址的方法。

    【讨论】:

    • 我可以指定地址。问题是我必须发送 IP 和主机名,因为客户端无权访问 DNS。这有意义吗?
    • 当您说客户端无法访问 DNS 时,您是什么意思?您的服务器是从 Internet 访问还是仅通过 Intranet 访问?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2021-09-28
    • 2018-11-17
    相关资源
    最近更新 更多