2013-03-04 41 views
0

我有一个WCF服务托管在IIS 7上,它使用自签名证书提供HTTPS连接。在IIS 7上托管的WCF无法验证邮件的安全

服务器位于美国,但消耗它的客户端位于中东。为了客户能够使用服务,我必须将服务器的时间和时区更改为客户所在的国家/地区。 这个配置在工作(将近一年了),但2天前的一些客户停止工作,并收到以下错误:

An error occurred when verifying security for the message.

,如果我不工作之前更改服务器时间为一小时客户端这些客户端将能够使用该服务,但以前工作的客户端停止工作并收到相同的错误。

有谁知道我该如何解决这个问题。 谢谢

回答

0

有两方面可以解决这个问题:如果您的IIS中安装了AppFabric或类似的东西,您可以开始为您的服务编写跟踪文件。这应该给你一个很好的图片什么在服务器端出错了。

在客户端,在不触摸服务器的情况下,您可能想要检查.NET是否愿意提供更多的具体错误,而不是“安全性无法正常工作”。尝试编写一个调用您的服务的控制台应用程序,并检查那里的SSL错误。

namespace ServiceTestConsole 
{ 
    using System; 
    using System.Net; 
    using System.Net.Security; 
    using System.Security.Cryptography.X509Certificates; 

    internal class Program 
    { 
    internal static void Main() 
    { 
     ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate; 

     // add a service reference and call your service here 

     Console.WriteLine("Press any key to continue"); 
     Console.ReadKey(); 
    } 

    private static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyerrors) 
    { 
     Console.WriteLine("SSL Policy Error(s): " + sslpolicyerrors); 

     return true; 
    } 
    } 
}