[英]How to enable HTTPS on WCF RESTful Service?
如何使wcf在https上工作。 我想使用這個wcf而不是https我搜索了很多文章我沒有得到答案請幫助我對wcf概念的新手。 我想從ajax,jquery中調用它
<system.serviceModel >
<services>
<service
name="WcfRestfulService.HttpService" behaviorConfiguration="ServiceBehaviour" >
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="web"
contract="WcfRestfulService.IHttpService">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
看來你正在用WCF構建一個RESTful服務,你真的很接近它。
以下是您需要做的事情來保護它:
Transport
的新WebHttpBinding
配置。 WebHttpBinding
配置分配給您的服務端點綁定。 httpGetEnabled="false"
來通過HTTPS訪問RESTful服務。 這些更改都在修訂后的配置文件中總結如下(請參閱有關更改的點的注釋)。 另請注意,您的服務端點必須使用HTTPS方案而不是HTTP。
<system.serviceModel >
<services>
<service name="WcfRestfulService.HttpService"
behaviorConfiguration="ServiceBehaviour" >
<endpoint address=""
binding="webHttpBinding"
<!-- Add reference to secure WebHttpBinding config -->
bindingConfiguration="webHttpTransportSecurity"
behaviorConfiguration="web"
contract="WcfRestfulService.IHttpService" />
<!-- Need to make sure that our metadata
publishing endpoint is using HTTPS as well -->
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<!-- Add secure WebHttpBinding config -->
<bindings>
<webHttpBinding>
<binding name="webHttpTransportSecurity">
<security mode="Transport" />
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpsGetEnabled="true"
<!-- Make sure the service can
be accessed only via HTTPS -->
httpGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
您需要在綁定中設置security mode="Transport"
<basicHttpBinding>
<binding name="secureHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
在MSDN上閱讀更多內容
我有同樣的問題,但想測試HTTP get請求,因為我的服務是內部的。
請記住也要啟用HTTPS Get。 httpsGetEnabled="true"
我的配置如下:
<bindings >
<basicHttpBinding>
<binding name="secureHttpBinding" >
<security mode="Transport" />
</binding>
</bindings>
.....
<behaviors>
<serviceBehaviors>
<behavior >
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.