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

标签 c# silverlight windows-services wcf-client

我正在处理一个 Silverlight 5 项目,我正在构建一个通过 SSL 连接到 WCF 服务的应用程序。当我通过 HTTP 连接时,这似乎在浏览器和浏览器外都有效。现在我已经实现了 SSL,它只适用于浏览器。有什么想法吗?

最佳答案

如果没有任何其他详细信息,很难猜测出了什么问题,但我最好的猜测是您使用的证书不受 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);

这将使您的应用程序在浏览器外运行时使用 IE 堆栈。您也可以反过来使用内置的 http 堆栈,即使在浏览器中运行时也是如此:

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

关于c# - Silverlight 5 通过 ssl 连接到 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414015/

相关文章:

silverlight - 在 silverlight 中绘制的最有效方法

windows - 无法将应用程序身份服务设置为自动启动

c# - 需要在 Wpf 中的两个效果之间创建延迟

Silverlight 项目 - 滑入和滑出面板 - 如何?

c# - Silverlight 切换按钮分组

c# - 从作为网络服务运行的 Windows 服务生成进程

c# - 如何以编程方式将参数传递给 Windows 服务的 OnStart 方法?

c# - JSON 变化值

c# - 从数据库中提取字符串。说不能隐式转换为 'string'

c# - 资源管理器预览导致 ActivePresentation.name 上出现 System.Runtime.InteropServices.COMException : Automation rights are not granted.