我正在尝试使用WCF创建基本的Web服务。它很小,只能在两台服务器之间内部使用,所以不需要任何安全性。不幸的是,WCF需要证书:
未提供服务证书。在ServiceCredentials中指定服务证书。
我不想在任何地方配置证书。证书非常适合安全性,但也总是包含两天令人头疼的问题,直到你把它们弄好就这样,我现在不想要它。
我在谷歌上搜索但无法在任何地方找到答案 - 你能禁用WCF的这个功能吗?
已添加:几乎忘了,这是我的绑定内容,以防它们有用:
<bindings>
<wsFederationHttpBinding>
<binding name="XXXServiceBinding" maxReceivedMessageSize="1073741824">
<readerQuotas maxStringContentLength="1073741824" maxArrayLength="2147483647"/>
</binding>
</wsFederationHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="XXXServiceBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="XXX.XXX" behaviorConfiguration="XXXServiceBehavior">
<endpoint address="xxx" contract="XXX.IXXX" binding="wsFederationHttpBinding" bindingConfiguration="XXXServiceBinding">
<identity>
<dns value="XXX Test Service"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
新增2:哦,对,VS2010,.NET 4.0。 Windows 7,集成了VS webserver。
答案 0 :(得分:4)
您的web.config
绑定部分是什么样的?据我所知,basicHttpBinding
与clientCredentialType="None"
一起使用时应该没有任何证书。即:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IServiceWS">
<security mode="None">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
....
答案 1 :(得分:3)
如果您不想使用安全性,为什么使用专为联合安全性设计的WsFedarationBinding
?请改用BasicHttpBinding
。默认情况下它不使用任何安全性,或者如果所有通信都将在使用域帐户的用户和服务的同一Windows域中执行,则可以使用WsHttpBinding
默认配置 - 它将使用Windows安全性而无需任何证书
答案 2 :(得分:2)
您在服务中使用wsFederationHttpBinding
。如果推进这么多的安全性并不重要,那么你可能已经开始使用名为basicHTTP
绑定的简单HTTP绑定。考虑对服务进行适当的绑定。