我一直在使用自签名证书将http应用程序转换为https和ssl。
出于某种原因,我必须在浏览器中访问localhost:#####以启动该服务。
一旦服务启动,我将在visual studio 2012 comman提示符中使用以下调用对其进行测试:
svcutil.exe https://localhost:10201/?wsdl
然后又回来了
Error: Cannot obtain Metadata from https://localhost:10201/?wsdl
If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.
WS-Metadata Exchange Error
URI: https://localhost:10201/?wsdl
Metadata contains a reference that cannot be resolved: 'https://localhost:10201/?wsdl'.
Could not establish trust relationship for the SSL/TLS secure channel with authority 'localhost:10201'.
The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
The remote certificate is invalid according to the validation procedure.
HTTP GET Error
URI: https://localhost:10201/?wsdl
There was an error downloading 'https://localhost:10201/?wsdl'.
The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
The remote certificate is invalid according to the validation procedure.
If you would like more help, type "svcutil /?"
这对我使用HTTPS的成功是否有用?
我的配置看起来像这样:
<system.serviceModel>
<!--SERVICES-->
<services>
<service name="DuplexService.DuplexService"
behaviorConfiguration="sb">
<endpoint
address="basic"
binding="customBinding"
bindingConfiguration="customDuplexBinding"
contract="DuplexService.Interface.IDuplexServiceContract">
</endpoint>
<endpoint
address=""
binding="webHttpBinding"
behaviorConfiguration="webHttpEndpointBehavior"
bindingConfiguration="webHttpsBinding"
contract="Interface.IPolicyRetriever">
</endpoint>
<endpoint
address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange">
</endpoint>
<host>
<baseAddresses>
<add baseAddress="https://localhost:10201" />
</baseAddresses>
</host>
</service>
</services>
<!--BEHAVIOURS-->
<behaviors>
<!--Policy-->
<endpointBehaviors>
<!-- For Policy Service -->
<behavior name="webHttpEndpointBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<!--behaviour for all of the enpoints -->
<serviceBehaviors>
<behavior name="sb">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="true" httpsGetUrl="https://localhost:10201"/>
<!-- 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"/>
<!-- This will solve a bug that happens if too many items are sent at once from the gateway to the client -->
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceThrottling
maxConcurrentCalls="200"
maxConcurrentSessions="200"
maxConcurrentInstances="200" />
</behavior>
</serviceBehaviors>
</behaviors>
<!-- BINDINGS-->
<bindings>
<webHttpBinding>
<binding name="webHttpsBinding">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</webHttpBinding>
<customBinding>
<binding name="customDuplexBinding">
<pollingDuplex duplexMode="MultipleMessagesPerPoll"
maxOutputDelay="00:00:01"
serverPollTimeout="00:01:00"
inactivityTimeout="02:00:00"
maxPendingMessagesPerSession="2147483647"
maxPendingSessions="2147483647" />
<binaryMessageEncoding>
<readerQuotas
maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binaryMessageEncoding>
<httpsTransport
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647"
transferMode="StreamedResponse" />
</binding>
</customBinding>
</bindings>
<!-- Register the binding extension from the SDK. -->
<extensions>
<bindingElementExtensions>
<add name="pollingDuplex"
type="System.ServiceModel.Configuration.PollingDuplexElement, System.ServiceModel.PollingDuplex" />
</bindingElementExtensions>
</extensions>
</system.serviceModel>
我怎样才能摆脱它?并使元数据工作和GET工作?
答案 0 :(得分:9)
我可以想出4种方法来解决这个问题。
我没有看到忽略证书错误的svcutil选项。
答案 1 :(得分:0)
我有同样的问题。对我来说,我注意到https正在使用另一个证书,该证书在到期日期方面无效。不知道为什么会这样。我更改了Https端口号和一个新的自签名证书。 WCFtestClinet可以通过HTTPS连接到服务器!