Error: cannot get metadata from http ......? Wsdl

I was in the process of converting an http application to https and ssl with a self-signed certificate.

for some reason I have to go to the browser on localhost: ##### in order to start the service.

As soon as the service is started, I test it with the following call at the visual studio 2012 command prompt:

svcutil.exe https://localhost:10201/?wsdl 

and he comes back with

 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 /?" 

Is this a defragment of my success with HTTPS?

My config is as follows:

 <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> 

How can I get rid of it? and get metadata to work and GET to work?

+6
source share
2 answers

I can think of 4 ways to deal with this.

  • Install the self-signed certificate as a trusted root auth. MMC β†’ Certificates
  • Use a browser to go to wsdl (click on a certificate error), save it and generate wsdl directly.
    • Put the wsdl url in your browser and click past the certificate warning to see the actual wsdl
    • Save wsdl to your computer. In chrome you can right click, save as.
    • In visual studio
      • Right-click on the project and select Add Service Link
      • In the Address field, enter the physical path (C: \ directory ...) of the loaded wsdl.
      • Hit go
  • Run the violinist and tell him to decrypt https, which will install the certificate, and will give you the opportunity to ignore the errors of the remote certificate. Described here. http://proq.blogspot.com/2012/02/svcutil-and-https.html
  • Use a certificate signed by a trusted root.

I did not see the svcutil parameter to ignore certificate errors.

+10
source

I had the same problem. For me, I noticed that https uses a different certificate, which was not valid in terms of expiration date. I don’t know why this happened. I changed the Https port number and the new self-signed certificate. WCFtestClinet can connect to the server via HTTPS!

0
source

All Articles