2009-11-06 18 views
18

Tengo un servicio web RESTful alojado en IIS 6.0, puedo navegar por el servicio en el navegador. Cuando estoy tratando de acceder al mismo servicio a través de la consola del cliente de aplicación, es que me da el siguiente error:siempre que el esquema URI'http 'no sea válido; se espera 'https'

"provided URI scheme'http' is invalid; expected 'https', Parameter name: Via" 

Mi web.config WebService tiene esta configuración:

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="ServiceBehavior" name="TestAPI"> 
    <endpoint address="" behaviorConfiguration="RESTFriendly" binding="webHttpBinding" contract="ITestAPI" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service>  
</services> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="RESTFriendly"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

Mi La aplicación del cliente tiene App.config desde donde obtengo la dirección:

<appSettings> 
<add key="WEBSERVICE" value="URL"/> 

en el método principal:

WebChannelFactory<ITestAPI> cf = new WebChannelFactory<IAPI>(baseAddress); 
      WebHttpBinding wb =cf.Endpoint.Binding as WebHttpBinding; 
      wb.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 
      wb.Security.Mode = WebHttpSecurityMode.Transport; 
      cf.Credentials.UserName.UserName = "usermane"; 
      cf.Credentials.UserName.Password = "password"; 

      ITestAPI channel = cf.CreateChannel(); 
      string msg = channel.TestMethod(); 

Cuando se trata de llamar TestMethod, me da este error.

ayuda por favor. Gracias por adelantado.

Respuesta

43

está configurando la seguridad al modo, que es HTTPS transportar, con esta línea:

wb.Security.Mode = WebHttpSecurityMode.Transport;

es el valor de baseAddress un servidor HTTP o HTTPS dirección?

+1

El valor es Http address. –

+4

Ese es el problema. Está especificando que desea un transporte seguro, pero HTTP no es un transporte seguro. –

+0

Gracias por esta respuesta. –

Cuestiones relacionadas