我们有一个WCF Web服务,遗憾的是,它必须使用SOAP 1.1 + SSL,因此我使用basicHttpBinding而不是wsHttpBinding。我相信我的web.config是有序的,因为我已经将它与stackoverflow和MSDN文章中的无数其他人进行了比较。我对其他问题解决方案没有任何好运,因为每个人似乎都在为所有SSL绑定示例使用wsHttpBinding。
StackOverflow上的许多建议导致服务器配置错误,例如SSL Headers,但我已经向管理我们的IIS的人员确认SSL端口绑定和SSL主机头正确配置(就我们而言)可以告诉)。但是,我们使用通配符证书,我已经阅读过,这可能会使此流程复杂化(由于链接上的新用户限制而被删除),尽管我的SSL工作且会话已加密。< / p>
我希望配置中的一些东西很简单,因为我一直在盯着它看太多小时/天。
当我尝试从WcfTestService.exe或基本.net应用程序调用服务时,出现以下错误。
没有端点收听 https:// subdomain.domain.us:8091/SalesService/SalesService.svc 那可以接受这个消息。这是 通常由不正确的地址引起 或SOAP动作。请参阅InnerException,if 目前,了解更多详情。
服务器堆栈跟踪:
at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException) webException,HttpWebRequest请求, HttpAbortReason abortReason)at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(时间跨度 超时)at System.ServiceModel.Channels.RequestChannel.Request(消息消息,TimeSpan超时)at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息消息,TimeSpan超时)at System.ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneways, ProxyOperationRuntime操作, Object [] ins,Object [] outs,TimeSpan 超时)at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime 操作) System.ServiceModel.Channels.ServiceChannelProxy.Invoke(即时聊天 消息)在[0]处重新抛出异常:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天 reqMsg,IMessage retMsg)at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培; msgData,Int32类型)at IServiceRC.RestrictedProduct(字符串 line1)at ServiceRCClient.RestrictedProduct(字符串 line1)内部异常:遥控器 服务器返回错误:(404)不是 发现。在 System.Net.HttpWebRequest.GetResponse() 在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(时间跨度 超时)
这是我的web.config
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="SalesService.ServiceRCbehavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="ServiceRCbind" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address=""
binding="basicHttpBinding" bindingConfiguration="ServiceRCbind"
contract="SalesService.IServiceRC"/>
</client>
<services>
<service behaviorConfiguration="SalesService.ServiceRCbehavior" name="SalesService.ServiceRC">
<endpoint address="" listenUri="SalesService.svc" binding="basicHttpBinding" contract="SalesService.IServiceRC" bindingConfiguration="ServiceRCbind"/>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="https://subdomain.domain.us:8091/SalesService/"/>
</baseAddresses>
</host>
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
<baseAddressPrefixFilters>
<!--<add prefix="https://subdomain.domain.us:8091/SalesService/"/>-->
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
</system.serviceModel>
我考虑过的另一件事就是在以前链接的解决方案中使用自定义端点,但我不认为我的情况特别需要它,只会使事情变得复杂。
非常感谢任何输入/参考。
编辑:Here是指向IIS生成的wsdl文本的链接(仅编辑匿名域名)