我正在开发一个Silverlight 5项目,我正在构建一个通过SSL连接到WCF服务的应用程序。当我通过HTTP连接时,这似乎在浏览器和浏览器之外工作。现在我已经实现了SSL,它只能在浏览器中使用。有什么想法吗?
答案 0 :(得分:0)
没有任何其他细节,很难猜出出了什么问题,但我最好的猜测是,您使用的证书不受Windows信任,而您的浏览器信任它。您使用的是导入浏览器的自签名证书吗?如果你是,你也应该导入windows证书商店。
在浏览器内部运行时,Silverlight将通过浏览器进行所有http(s)调用,因此浏览器将决定证书是否可信。在浏览器之外,使用内置的http堆栈,后者又使用CA的窗口列表。
您可以通过将这些行添加到App.xaml.cs中的Application_Startup()来强制Silverlight使用某个http堆栈:
WebRequest.RegisterPrefix("http://", System.Net.Browser.WebRequestCreator.BrowserHttp);
WebRequest.RegisterPrefix("https://", System.Net.Browser.WebRequestCreator.BrowserHttp);
这将使您的应用程序在运行Out of Browser时使用IE堆栈。您也可以反过来使用内置http堆栈,即使在浏览器中运行时也是如此:
WebRequest.RegisterPrefix("http://", System.Net.Browser.WebRequestCreator.ClientHttp);
WebRequest.RegisterPrefix("https://", System.Net.Browser.WebRequestCreator.ClientHttp);