C# Silverlight 5通过ssl连接到WCF服务

C# Silverlight 5通过ssl连接到WCF服务,c#,silverlight,windows-services,wcf-client,C#,Silverlight,Windows Services,Wcf Client,我正在从事Silverlight 5项目,我正在构建一个通过SSL连接到WCF服务的应用程序。当我通过HTTP连接时,这似乎可以在浏览器内外工作。现在我已经实现了SSL,它只在浏览器中工作。有什么想法吗?如果没有任何其他详细信息,很难猜出哪里出了问题,但我最好的猜测是,Windows不信任您使用的证书,而您的浏览器信任它。您是否正在使用导入浏览器的自签名证书?如果是,还应导入windows证书存储 在浏览器内运行时,Silverlight将通过浏览器执行所有http(s)调用,因此将由浏览器决定

我正在从事Silverlight 5项目,我正在构建一个通过SSL连接到WCF服务的应用程序。当我通过HTTP连接时,这似乎可以在浏览器内外工作。现在我已经实现了SSL,它只在浏览器中工作。有什么想法吗?

如果没有任何其他详细信息,很难猜出哪里出了问题,但我最好的猜测是,Windows不信任您使用的证书,而您的浏览器信任它。您是否正在使用导入浏览器的自签名证书?如果是,还应导入windows证书存储

在浏览器内运行时,Silverlight将通过浏览器执行所有http(s)调用,因此将由浏览器决定证书是否可信。浏览器外使用内置http堆栈,该堆栈反过来使用windows的CA列表

通过将以下行添加到App.xaml.cs中的应用程序_Startup(),可以强制Silverlight使用特定的http堆栈:

 WebRequest.RegisterPrefix("http://", System.Net.Browser.WebRequestCreator.BrowserHttp);
 WebRequest.RegisterPrefix("https://", System.Net.Browser.WebRequestCreator.BrowserHttp);
这将使您的应用程序在浏览器用完时使用IE堆栈。即使在浏览器中运行,也可以执行相反的操作并使用内置http堆栈:

 WebRequest.RegisterPrefix("http://", System.Net.Browser.WebRequestCreator.ClientHttp);
 WebRequest.RegisterPrefix("https://", System.Net.Browser.WebRequestCreator.ClientHttp);

如果没有任何其他详细信息,很难猜测出问题出在哪里,但我最好的猜测是,您使用的证书不受Windows信任,而您的浏览器信任它。您是否正在使用导入浏览器的自签名证书?如果是,还应导入windows证书存储

在浏览器内运行时,Silverlight将通过浏览器执行所有http(s)调用,因此将由浏览器决定证书是否可信。浏览器外使用内置http堆栈,该堆栈反过来使用windows的CA列表

通过将以下行添加到App.xaml.cs中的应用程序_Startup(),可以强制Silverlight使用特定的http堆栈:

 WebRequest.RegisterPrefix("http://", System.Net.Browser.WebRequestCreator.BrowserHttp);
 WebRequest.RegisterPrefix("https://", System.Net.Browser.WebRequestCreator.BrowserHttp);
这将使您的应用程序在浏览器用完时使用IE堆栈。即使在浏览器中运行,也可以执行相反的操作并使用内置http堆栈:

 WebRequest.RegisterPrefix("http://", System.Net.Browser.WebRequestCreator.ClientHttp);
 WebRequest.RegisterPrefix("https://", System.Net.Browser.WebRequestCreator.ClientHttp);