How can I generate a client proxy for a WCF service with an HTTPS endpoint?
- by ng5000
Might be the same issue as this previuos question: WCF Proxy but not sure...
I have an HTTPS service connfigured to use transport security and, I hope, Windows credentials.  The service is only accessed internally (i.e. within the intranet).  The configuration is as follows:
<configuration>
  <system.serviceModel>
    <services>
      <service name="WCFTest.CalculatorService" behaviorConfiguration="WCFTest.CalculatorBehavior">
        <host>
          <baseAddresses>
            <add baseAddress = "https://localhost:8000/WCFTest/CalculatorService/" />
          </baseAddresses>
        </host>
        <endpoint address ="basicHttpEP" binding="basicHttpBinding" contract="WCFTest.ICalculatorService" bindingConfiguration="basicHttpBindingConfig"/>    
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttpBindingConfig">
          <security mode="Transport">
            <transport clientCredentialType = "Windows"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WCFTest.CalculatorBehavior">          
          <serviceAuthorization impersonateCallerForAllOperations="false"  principalPermissionMode="UseWindowsGroups" />
          <serviceCredentials >
            <windowsAuthentication allowAnonymousLogons="false" includeWindowsGroups="true" />
          </serviceCredentials>
          <serviceMetadata httpsGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
When I run the service I can't see the service in IE.  I get a "this page can not be displayed" error.  If I try and create a client in VS2008 via the "add service reference" wizard I get this error:
  There was an error downloading
  'https://localhost:8000/WCFTest/CalculatorService/'.
  There was an error downloading
  'https://localhost:8000/WCFTest/CalculatorService/'.
  The underlying connection was closed:
  An unexpected error occurred on a
  send. Authentication failed because
  the remote party has closed the
  transport stream. Metadata contains a
  reference that cannot be resolved:
  'https://localhost:8000/WCFTest/CalculatorService/'.
  An error occurred while making the
  HTTP request to
  https://localhost:8000/WCFTest/CalculatorService/.
  This could be due to the fact that the
  server certificate is not configured
  properly with HTTP.SYS in the HTTPS
  case. This could also be caused by a
  mismatch of the security binding
  between the client and the server. The
  underlying connection was closed: An
  unexpected error occurred on a send.
  Authentication failed because the
  remote party has closed the transport
  stream. If the service is defined in
  the current solution, try building the
  solution and adding the service
  reference again.
I think I'm missing some fundamental basics here.  Do I need to set up some certificates?  Or should it all just work as it seems to do when I use NetTcpBinding?
Thanks