WCF自定义验证,老是报错证书错误,说证书无效,什么的!!! 请问哪位有能正常运行的wcf的demo,给小弟参照一下!!! 请高手帮帮忙啊~~~wcf

解决方案 »

  1.   

    我以前上传的 要一分
    http://download.csdn.net/detail/jiaoshiyao/5987049
      

  2.   

    @jiaoshiyao 
    我没分啊~
    能给我发一份吗?
    [email protected]
      

  3.   

    @jiaoshiyao 
    这个代码我下载了,没有用户验证啊~
      

  4.   

    还不如去微软官网去下载完整示例,浪费了1分啊。using (ServiceHost serviceHost = new ServiceHost(typeof(Server)))
    {
        serviceHost.Credentials.ServiceCertificate.Certificate = new X509Certificate2(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "我的证书.pfx"), "密码");
        serviceHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;
        serviceHost.Open();
        Console.WriteLine("服务器成功启动!");其它配置写在了配置文件里面了,这里之所以在代码里面写,目的就是为了可以使用证书文件,灵活调用证书,如果你想调用系统已经存在的证书而不是证书文件,可以这么写:
    serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.CurrentUser,
                                              StoreName.My,
                                              X509FindType.FindBySubjectDistinguishedName,
                                              "CN=SecGateAdmin, C=CN");
    最后一个参数是证书名称,按名称查找证书。最后要注意的是,证书必须包含私钥,否则无法使用。客户端证书可以不需要,建议客户端证书验证模式设置为None,加密只需要服务器证书就可以了。
      

  5.   

    你能不能把问题描述详细些,使用的协议是什么,WCF的协议有很多种,不同协议的配置并不完全相同。还有你目前写到什么程度了,相关启动代码和配置文件都贴出来啊,不然要帮你也很麻烦,还得猜问题。
    netTcpBinding举例:            <netTcpBinding>
                    <binding name="TcpBinding" transferMode="Streamed" sendTimeout="00:10:00" receiveTimeout="00:10:00" maxReceivedMessageSize="2147483647">
                        <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
                        <security mode="Transport">
                            <transport clientCredentialType="None"/>
                        </security>
                    </binding>
                </netTcpBinding>
      

  6.   

    我使用的是wsHttp协议,
    设置基本都一样~
    我看看怎么贴代码上来看看
      

  7.   

    在使用wsHttp的时候,使用证书的链接必须是https开头,你却用http开头,怎么能不出错?
    其二,ssl证书验证是很严格的,必须有有效的根证书(域名和有效期都必须通过),否则就会报错,为了避免证书验证失败,服务端一般都会添加serviceHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;
    而客户端都会有
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(allowCert);        private static bool allowCert(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
            {
                return true;
            }