我还是 WCF 的新手,并且对为什么在 WCF 中需要某些部分(如果需要)有一些疑问:
1) 我有一个使用 WCF 服务与数据库通信的应用程序。我在本地机器上设置了一个测试 SSL 证书,并将 WCF 服务的 web.config 设置为:
<wsHttpBinding>
<binding name="MyService" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows" />
<message clientCredentialType="UserName"/>
</security>
</binding>
</wsHttpBinding>
因为我有 SSL 设置,我读过我必须有传输安全性,通过将 clientCredentialType 设置为 Windows 有什么作用?SSL 不是负责来回传递数据的安全性吗?我得到的消息,因为我设置了一个自定义类来验证用户。我只是不明白为什么我需要它来传输,如果我不需要它,当它设置到 Windows 时它会做什么,这是否意味着公司网络内的所有消息都很好,但如果该网络之外的任何消息试图与它被阻止的服务交谈?
2) 对于本节:
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
当我去生产时,两者都应该设置为错误正确吗?因此,任何其他尝试设置对生产 url 的服务引用的应用程序都将被阻止,或者无法构建代理类?
3) includeExceptionDetailInFaults,我应该始终将其保留为假吗?目前,当 WCF 服务中发生错误时,我让代码抛出一个新的 FaultException,然后传播到 Web 应用程序中的方法,该方法正在向我发送包含错误消息的电子邮件,用户只会收到一般错误页。
谢谢你。