首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >提供的URI方案'https‘无效;预期的'http’。参数名称: via

提供的URI方案'https‘无效;预期的'http’。参数名称: via
EN

Stack Overflow用户
提问于 2010-03-12 20:53:00
回答 17查看 429.3K关注 0票数 322

我正在尝试在basicHttpBinding上创建一个WCF服务,以便在https上使用。这是我的web.config:

代码语言:javascript
复制
<!-- 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>
...
代码语言:javascript
复制
<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’。参数名称: via

EN

回答 17

Stack Overflow用户

发布于 2010-03-15 03:14:08

尝试在您的app.config上添加消息凭据如下:

代码语言:javascript
复制
<bindings> 
<basicHttpBinding> 
<binding name="defaultBasicHttpBinding"> 
  <security mode="Transport"> 
    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/> 
    <message clientCredentialType="Certificate" algorithmSuite="Default" />
  </security> 
</binding> 
</basicHttpBinding> 
</bindings> 
票数 271
EN

Stack Overflow用户

发布于 2014-01-15 15:55:37

添加这个作为一个答案,就因为你不能在注释中做很多花哨的格式化。

我也有同样的问题,只是我完全用代码来创建和绑定我的web服务客户端。

原因是DLL被上传到一个系统中,禁止使用配置文件。

下面是需要更新的代码,以便通过SSL进行通信.

代码语言:javascript
复制
Public Function GetWebserviceClient() As WebWorker.workerSoapClient
    Dim binding = New BasicHttpBinding()
    binding.Name = "WebWorkerSoap"
    binding.CloseTimeout = TimeSpan.FromMinutes(1)
    binding.OpenTimeout = TimeSpan.FromMinutes(1)
    binding.ReceiveTimeout = TimeSpan.FromMinutes(10)
    binding.SendTimeout = TimeSpan.FromMinutes(1)

    '// HERE'S THE IMPORTANT BIT FOR SSL
    binding.Security.Mode = BasicHttpSecurityMode.Transport

    Dim endpoint = New EndpointAddress("https://myurl/worker.asmx")

    Return New WebWorker.workerSoapClient(binding, endpoint)
End Function
票数 69
EN

Stack Overflow用户

发布于 2016-07-21 15:43:37

变出

代码语言:javascript
复制
<security mode="None">

代码语言:javascript
复制
<security mode="Transport">

在web.config文件中。此更改将允许您使用https而不是http。

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2435823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档