关于WCF开发的服务,如果使用IIS发布部署的,对于Web.Config文件中的配置还是相对严格,如果客户端和服务端的配置不一致就会出现莫名其妙的问题,让人及其头疼,所以要对WCF的配置设置非常熟悉。
View Code
<system.serviceModel> <bindings> <basicHttpBinding> </basicHttpBinding> <wsHttpBinding> <binding name="wsTSBinding" maxReceivedMessageSize="2147483647" messageEncoding="Text" receiveTimeout="00:30:00" sendTimeout="00:30:00"> <security mode="Message"> <!--定义消息级安全性要求的类型,为Windows、用户名、证书--> <message clientCredentialType="Windows" /> <transport clientCredentialType="None" /> </security> <!--<security mode="Transport"> <transport clientCredentialType="None" /> </security>--> </binding> </wsHttpBinding> <netMsmqBinding> </netMsmqBinding> <netTcpBinding> </netTcpBinding> </bindings> <services> <service name="WcfService1.Persons" behaviorConfiguration="WCFServiceBehavior"> <!-- Service Endpoints --> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsTSBinding" contract="WcfService1.IPersons"> <!-- Upon deployment, the following identity element should be removed or replaced to reflect the identity under which the deployed service runs. If removed, WCF will infer an appropriate identity automatically. --> <identity> <!--dns value的值设置为:WCFServerCA,就是证书的名称--> <!--<dns value="WCFCert" />--> </identity> </endpoint> <!--<endpoint address="http://localhost:9008/StockService.svc" binding="basicHttpBinding" contract="WcfService1.IStockService"> </endpoint>--> <!--<endpoint address="net.msmq://localhost:9007/Persons.svc" binding="netMsmqBinding" contract="WcfService1.IPersons"> </endpoint> <endpoint address="net.tcp://localhost:9006/Persons.svc" binding="netTcpBinding" contract="WcfService1.IPersons"> </endpoint>--> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:9009/"/> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name="WCFServiceBehavior"> <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 --> <serviceMetadata httpGetEnabled="true" /> <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --> <serviceDebug includeExceptionDetailInFaults="false" /> <!--<serviceAuthenticationManager serviceAuthenticationManagerType="Negotiate, Digest, Basic"/>--> <serviceCredentials> <!--指定一个 X.509 证书,用户对认证中的用户名密码加密解密--> <!--<serviceCertificate findValue="WCFCert" x509FindType="FindBySubjectName" storeLocation="CurrentUser" />--> <!--自定义用户名和密码验证的设置--> <!--<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="WcfService1.CustomValidators.MyCustomValidator,WcfService1" />--> <clientCertificate> <!-- 客户凭据验证模式为 None 不验证 --> <authentication certificateValidationMode="None" /> </clientCertificate> </serviceCredentials> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel>