wcf服务与运输安全

时间:2012-04-18 17:31:44

标签: wcf wcf-security wcf-client

几天以来,我一直在努力追随。请帮我。我正在使用带有.Net 3.5的XP机器。我正在关注这个例子http://msdn.microsoft.com/en-us/library/ms729789.aspx。我使用http://msdn.microsoft.com/en-us/library/ms733813(v=vs.90).aspx创建了证书,并在证书(本地计算机)中导入了根证书>受信任的根证书颁发机构>证书(本地计算机)中的证书和其他证书>个人>证书。我是自托管服务。软管代码是

        ServiceHost svcHost = new ServiceHost(typeof(CalculatorService.CalculatorService), new  Uri("https://localhost:8012/CalculatorService"));           
        ServiceMetadataBehavior smb = svcHost.Description.Behaviors.Find<ServiceMetadataBehavior>();
        if (smb == null)
            smb = new ServiceMetadataBehavior();
        smb.HttpsGetEnabled = true;
        smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
        svcHost.Description.Behaviors.Add(smb);
        svcHost.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName,
            MetadataExchangeBindings.CreateMexHttpsBinding(),
            "mex");
        WSHttpBinding b = new WSHttpBinding();
        b.Security.Mode= SecurityMode.Transport;
        b.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; 
        svcHost.AddServiceEndpoint(typeof(CalculatorService.ICalculator),b , "");
        svcHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "SignedByCA");
        svcHost.Open();
        Console.WriteLine("The service is ready.");
        Console.WriteLine("Press <ENTER> to terminate service.");
        Console.WriteLine();
        Console.ReadLine();
        svcHost.Close();

当我尝试在客户端添加引用时,我收到以下错误。

  

下载'https:// localhost:8012 / CalculatorService / mex'时出错。   底层连接已关闭:发送时发生意外错误。   身份验证失败,因为远程方已关闭传输流。   元数据包含无法解析的引用:'https:// localhost:8012 / CalculatorService / mex'。   向https://localhost:8012/CalculatorService/mex发出HTTP请求时发生错误。这可能是由于在HTTPS情况下未使用HTTP.SYS正确配置服务器证书。这也可能是由客户端和服务器之间的安全绑定不匹配引起的。   底层连接已关闭:发送时发生意外错误。   身份验证失败,因为远程方已关闭传输流。   如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。

我想我已经尝试了所有可能的方法。现在,我不知道。请帮我。你是我的最终资源。

0 个答案:

没有答案