转换“HelloWorld”WCF Web服务以使用https?

时间:2012-08-03 16:05:34

标签: wcf web-services https

如果你是初学者,很难获得网络服务,不是因为这个概念很难 - 事实并非如此 - 而是因为这项技术经历了很多曲折并且谷歌搜索帮助如果你所得到的只是略有不同的实现的答案,那么会有所帮助。

[例如我们的解决方案从未有过.svc文件或.asmx文件,尽管这些文件在答案中定期出现,而我们的web.config没有任何behaviorbinding元素,其他人似乎有]

我们使用了一个教程来设置我认为在IIS6上运行的“WCF Web服务”。它工作正常。

但我们想将其转换为使用加密/ https。

所以我们检查了IIS中的需要安全通道框:
enter image description here

不确定在那里配置了什么,但是......无论如何,继续前进。接下来我想我们必须修改我们的web.config文件......但是什么以及如何?这是我们在web.config中的system.serviceModel下的内容:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"></serviceHostingEnvironment>
    <standardEndpoints>
        <webHttpEndpoint>
            <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"></standardEndpoint>
        </webHttpEndpoint>
    </standardEndpoints>
</system.serviceModel>

那么接下来我们需要做什么呢?

1 个答案:

答案 0 :(得分:0)

好的,不幸的是,如果没有所有代码,很难成为规定性的,但这里是概述:

您需要将这些绑定和行为添加到web.config中。

我从basicHttpBinding开始,只是让它像当前一样工作,但这次你将指定绑定细节而不是使用默认值。要“关闭”https,请将bindingConfiguration中的安全模式更改为None。

完成后,您的WCF服务会有类似的内容:

<services>
    <service behaviorConfiguration="webServiceClientBehavior" name="My.Service.ServiceName">
            <endpoint address="http://localhost:5803/LSClient"  binding="basicHttpBinding" bindingConfiguration="secureBinding" contract="My.Service.IServiceName"/>
    </service>
</services>

对于bindingConfiguration:

<bindings>
      <basicHttpBinding>
        <binding name="secureBinding">
          <security mode="Transport" />
        </binding>
      </basicHttpBinding>
</bindings>

对于behaviorConfiguration:

<serviceBehaviors>
       <behavior name="webServiceClientBehavior">
          <!--For MetaData-->
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:5802/LSClientMD"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
</serviceBehaviors>

这些将需要针对您的实施稍作调整,但这是一个基本概述。