2009-11-06 4 views
18

Ich habe einen RESTful Web Service in IIS 6.0 gehostet, ich bin in der Lage, den Dienst im Browser zu durchsuchen. Wenn ich versuche, den gleichen Dienst über Client-Konsole App zuzugreifen, es mir die folgende Fehlermeldung geben:vorausgesetzt, das URI-Schema'http 'ist ungültig; erwartet 'https'

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

Mein WebService web.config hat diese Einstellungen:

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

Meine Client App hat App.config von wo ich die Adresse bekomme:

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

in der Main-Methode:

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(); 

Wenn es versucht Testmethod zu nennen, gibt es mir diesen Fehler.

hilfe plz. Danke im Voraus.

Antwort

43

Sie richten den Sicherheitsmodus zu transportieren, die HTTPS ist, mit dieser Zeile:

wb.Security.Mode = WebHttpSecurityMode.Transport;

Ist der Wert von baseAddress eine HTTP- oder HTTPS-Adresse?

+1

Der Wert ist Http-Adresse. –

+4

Das ist das Problem. Sie geben an, dass Sie einen sicheren Transport wünschen, aber HTTP ist kein sicherer Transport. –

+0

Vielen Dank für diese Antwort. –

Verwandte Themen