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