我试图使一个WCF服务在basicHttpBinding上使用https。这是我的web.config:

<!-- language: xml -->
<service behaviorConfiguration="MyServices.PingResultServiceBehavior"
         name="MyServices.PingResultService">
    <endpoint address="" 
              binding="basicHttpBinding" 
              bindingConfiguration="defaultBasicHttpBinding"
              contract="MyServices.IPingResultService">
        <identity>
            <dns value="localhost" />
        </identity>
    </endpoint>
    <endpoint address="mex" 
              binding="mexHttpBinding" 
              contract="IMetadataExchange" />
</service>
...
<bindings>
  <basicHttpBinding>
    <binding name="defaultBasicHttpBinding">
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
...
<behaviors>
  <serviceBehaviors>
    <behavior name="MyServices.UpdateServiceBehavior">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

我使用WCFStorm连接,它能够正确检索所有元数据,但当我调用实际的方法时,我得到:

提供的URI方案'https'无效;预计“http”。参数 名称:通过


当前回答

我需要以下绑定来让我的工作:

        <binding name="SI_PurchaseRequisition_ISBindingSSL">
          <security mode="Transport">
            <transport clientCredentialType="Basic" proxyCredentialType="None" realm="" />
          </security>
        </binding>

其他回答

我的解决方案,遇到同样的错误消息,甚至比上面的更简单,我只是更新到basichttpbinding >

  <bindings>
    <basicHttpsBinding>
    <binding name="ShipServiceSoap" maxBufferPoolSize="512000" maxReceivedMessageSize="512000" />
    </basicHttpsBinding>
    </bindings>

下面的部分也一样:

  <client>
    <endpoint address="https://s.asmx" binding="basicHttpsBinding" bindingConfiguration="ShipServiceSoap" contract="..ServiceSoap" name="ShipServiceSoap" />
    </client>

重新概括一下OP中的问题:

我连接[到一个WCF服务]使用WCFStorm,这是能够正确检索所有元数据,但当我调用实际的方法,我得到: 提供的URI方案'https'无效;预计“http”。参数名称:via

WCFStorm教程在使用IIS和SSL中解决了这个问题。

他们的解决方案对我很有效:

To fix the error, generate a client config that matches the wcf service configuration. The easiest way to do this is with Visual Studio. Open Visual Studio and add a service reference to the service. VS will generate an app.config file that matches the service Edit the app.config file so that it can be read by WCFStorm. Please see Loading Client App.config files. Ensure that the endpoint/@name and endpoint/@contract attributes match the values in wcfstorm. Load the modified app.config to WCFStorm [using the Client Config toobar button]. Invoke the method. This time the method invocation will no longer fail

第(1)项的最后一个项目实际上是指删除VS加在端点合约属性前的命名空间前缀,默认情况下为“ServiceReference1”

<endpoint ... contract="ServiceReference1.ListsService" ... />

所以在你加载到WCFStorm的app.config中,你想为ListsService:

<endpoint ... contract="ListsService" ... />

您是在Cassini (vs开发服务器)上运行此程序,还是在安装了证书的IIS上运行此程序?我在过去尝试连接开发web服务器上的安全端点时遇到过问题。

下面是过去对我有用的绑定配置。它使用wsHttpBinding而不是basicHttpBinding。我不知道这对你来说是不是问题。

<!-- Binding settings for HTTPS endpoint -->
<binding name="WsSecured">
    <security mode="Transport">
        <transport clientCredentialType="None" />
        <message clientCredentialType="None"
            negotiateServiceCredential="false"
            establishSecurityContext="false" />
    </security>
</binding>

还有端点

<endpoint address="..." binding="wsHttpBinding"
    bindingConfiguration="WsSecured" contract="IYourContract" />

另外,请确保更改客户端配置以启用传输安全性。

如果你是通过编程而不是web。配置它:

new WebHttpBinding(WebHttpSecurityMode.Transport)

改变 从

<security mode="None">

to

<security mode="Transport">

在你的网里。配置文件。此更改将允许您使用https而不是http