Silverlight无法与HTTPS Web服务通信?

时间:2010-08-16 16:27:59

标签: silverlight-4.0 https securityexception clientaccesspolicy.xml

我有一个与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服务的可能原因是什么?我该如何调试呢?

编辑仍然没有答案 - 我可以提供任何其他信息来帮助解决这个问题吗?

1 个答案:

答案 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的原因的信息。这样可以节省我们很多时间和金钱。