如何在.NET Core中调用WCF服务时指定主机名?

时间:2017-08-24 15:31:30

标签: wcf .net-core

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

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

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

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

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服务的任何想法吗?

1 个答案:

答案 0 :(得分:0)

尝试浏览生成的ServiceClient。它必须有一个方法来指定远程服务器地址。