【问题标题】:Silverlight can't talk to HTTPS web service?Silverlight 无法与 HTTPS Web 服务通信?
【发布时间】:2011-03-30 12:56:30
【问题描述】:

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

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

【问题讨论】:

    标签: silverlight-4.0 https securityexception clientaccesspolicy.xml


    【解决方案1】:

    我们想通了。问题归结为跨区域调用:

    我们的 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 的原因的信息。这会为我们节省很多时间和金钱。

    【讨论】:

    • 是的,您阅读答案了吗?问题在于,该应用程序是从 IE 认为的低信任(互联网)运行的,并且与托管在 IE 认为的高信任(企业 Intranet)中的服务进行通信。解决方案是将应用程序和服务放在同一个区域:都在 Internet 上,或者都在 Intranet 上。
    猜你喜欢
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2014-06-15
    相关资源
    最近更新 更多