我有一个与 HTTPS 网络服务对话的 Silverlight 应用。
在大多数机器上它工作正常,但是,在某些机器上它总是失败。
在失败的机器上,我在向 HTTPS Web 服务发出 WebClient 请求时收到 SecurityException。 SecurityException 本身并没有给我任何关于它为什么真正失败的线索:
WebClient client = ...;
client.DownloadStringCompleted += OnCompleted;
client.DownloadStringAsyc("https://somewebservice/foo");
...
void OnCompleted(object sender, DownloadStringCompletedEventArgs e)
{
Console.WriteLine(e.Error); // Prints SecurityException. Message = "Security error"
}
Silverlight 应用无法调用 HTTPS 网络服务的可能原因有哪些?我该如何调试它?
编辑 仍然没有答案 -- 我可以提供任何其他信息来帮助解决这个问题吗?
最佳答案
我们想通了。问题归结为跨区域调用:
我们的 Silverlight 应用托管在 foo.bar.com 上,它位于 IE 的常规 Internet 区域(低信任度)。
我们的 Web 服务托管在 foo.ourcompany.com 上,它位于 IE 的 Intranet 区域(高信任度)。
Silverlight 应用程序无法从低安全区域向高安全区域发出 Web 请求调用。请参阅 MSDN 关于 Silverlight URL Access Restrictions 的文章想要查询更多的信息。在我们的例子中,从 Internet->Intranet 是从低信任度到高信任度,因此 SL 调用失败并出现 SecurityException。
意见:Microsoft 应该提供有关在 Web 请求调用期间发生 SecurityException 的原因的信息。这会为我们节省很多时间和金钱。
关于silverlight-4.0 - Silverlight 无法与 HTTPS Web 服务对话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3495173/