几天以来,我一直在努力追随。请帮我。我正在使用带有 .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 正确配置服务器证书。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。底层连接已关闭:发送时发生意外错误。身份验证失败,因为远程方已关闭传输流。如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。
我想我已经尝试了所有可能的方法。现在,我一点头绪都没有。请帮我。你是我最后的资源。