gpt4 book ai didi

wcf - WCF 是否支持 SNI(服务器名称指示)

转载 作者:行者123 更新时间:2023-12-03 18:30:10 26 4
gpt4 key购买 nike

我想使用基本身份验证来使用第 3 方 WCF 服务,但我还需要使用 SNI。我已经将以下示例(减去真实端点的东西)组合在一起,以显示我的设置和我得到的错误。

任何帮助都非常感谢,因为我对 WCF 知之甚少,对 SNI 一无所知。

配置

<endpoint 
address="https://their.server.com/theirservice.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ISyncFramework2"
contract="ISyncFramework" name="BasicHttpBinding_ISyncFramework2">
</endpoint>

<basicHttpBinding>
<binding name="BasicHttpBinding_ISyncFramework2" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="None"
realm="" />
</security>
</binding>
</basicHttpBinding>

代码:
            var service = new SyncFrameworkClient();
service.ClientCredentials.UserName.UserName = "username";
service.ClientCredentials.UserName.Password = "thepassword";

service.method() // fails!

对方法的调用失败:

无法激活请求的服务“https://their.server.com/theirservice.svc”。有关详细信息,请参阅服务器的诊断跟踪日志。

服务器跟踪
Server stack trace: 
at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

最佳答案

该错误通常是服务端问题,而不是客户端问题。 SNI 是一种改进 SSL 握手的服务器技术,在 Microsoft 堆栈中是 only supported in the unreleased IIS 8版本。除非第三方推出他们自己的 SNI/SSL 堆栈,否则他们的 WCF 服务似乎不太可能需要它。

在您得到的实际异常中,似乎与 this blog post 类似。可能是问题的原因。您的配置和代码片段看起来适合使用 SSL 和基本 HTTP 身份验证的 basicHttpBinding。

关于wcf - WCF 是否支持 SNI(服务器名称指示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9688940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com