3

我有一個與HTTPS Web服務交談的Silverlight應用程序。Silverlight無法與HTTPS Web服務通話?

在大多數機器上它工作正常,但是,在某些機器上它一直失敗。

在發生故障的機器上,向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服務?我怎麼去調試呢?

編輯仍然沒有答案 - 是否有任何額外的信息,我可以幫助解決這個問題?

回答

3

我們知道了。問題歸結爲跨區域呼叫:

我們的Silverlight應用程序託管在foo.bar.com上,這是在IE的常規Internet區域(低信任)。

我們的網絡服務託管在foo.ourcompany.com上,它位於IE的Intranet區域(高信任度)。

Silverlight應用程序無法進行從低安全區域到高安全區域的Web請求調用。有關更多信息,請參閱MSDN關於Silverlight URL Access Restrictions的文章。在我們的例子中,從Internet-> Intranet從低信度轉向高信任,所以SL調用失敗並帶有SecurityException。

意見:微軟應提供有關Web請求調用期間發生SecurityException的原因的信息。這會爲我們節省很多時間和金錢。

+0

你是否設法解決這個問題? – 2012-10-04 11:51:49

+0

是的,你看過答案嗎?問題在於,該應用程序是從IE認爲信任度低(互聯網)以及與IE認爲高度信任(企業內部網)託管的服務對話的情況下運行的。解決方案是將應用程序和服務放在同一個區域:無論是在互聯網上,還是在Intranet上。 – 2012-10-05 00:34:49