我有一个与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 Web服务的可能原因是什么?我该如何调试呢?
编辑仍然没有答案 - 我可以提供任何其他信息来帮助解决这个问题吗?
答案 0 :(得分:3)
我们想通了。问题归结为跨区域呼叫:
我们的Silverlight应用程序托管在foo.bar.com上,该应用程序位于IE的常规Internet区域(低信任度)。
我们的网络服务托管于foo.ourcompany.com,该网站位于IE的Intranet区域(高信任度)。
Silverlight应用无法从低安全区域向更高安全区域发出Web请求呼叫。有关详细信息,请参阅MSDN上有关Silverlight URL Access Restrictions的文章。在我们的例子中,从Internet-> Intranet开始从低信任到高信任,因此SL调用因SecurityException而失败。
意见:Microsoft应提供有关Web请求调用期间发生SecurityException的原因的信息。这样可以节省我们很多时间和金钱。