0

我一直在寻找整个网站和堆栈溢出,我可以解决我的问题。

网络设置

我在暂存世界中的网络方式是让客户在 443 端口 - https 上查看我的 web 应用程序,但底层结构正在侦听 80 端口 - http。因此,当我的应用程序在端口 80 上相互通信时,但当客户端访问站点时,其端口为 443。例如,我从 silverlight 调用的 svc 将在端口 80 上。

我还应该指出,在我的暂存和测试域中:我有一个 Web 服务器充当我的应用服务器的门户;但这并不重要,因为我能够进行测试。只是staging 有HTTP 转发到HTTPS。

应用

我有一个 silverlight xap 文件,它与使用 IIS 6 的托管 Web 应用程序位于同一域中。

现在,由于我的 silverlight xap 文件和我的 web 应用程序在同一个域上,我在开发和测试上运行它没有问题,但是当我尝试部署到暂存时,我遇到了一个奇怪的跨域引用问题:

“System.ServiceModel.CommunicationException:尝试向 URI 发出请求时发生错误。这可能是由于尝试以跨域方式访问服务而没有适当的跨域策略,或者是不适合肥皂服务。”

四处挖掘,我意识到我的应用程序认为我的 xap(或我正在调用的服务)和我的 Web 应用程序位于不同的域上,并自动查找 crossdomain.xml 和 clientaccesspolicy.xml 文件,我真的不能停下来。但是,在我的应用程序中,情况并非如此。它们都驻留在同一个域中。我使用过 fiddler,但我没有看到任何关于另一个域甚至子域的信息。

浏览器问题

我发现的另一个奇怪的事情是 chrome vs ie 的问题:在 chrome 上,它发现 crossdomain.xml 和 clientaccesspolicy.xml 告诉我它不安全,然后它从 https 端进行另一次提取,发出 404 错误信号。但是,在 IE 上,我得到了 302 重定向。在微软关于 clientaccesspolicy.xml 的文档中,您不应该从 xml 文件进行任何重定向;这在这里提到:http: //msdn.microsoft.com/en-us/library/cc838250 (v=vs.95).aspx

所以我的问题是,如果我的应用程序和 xap 在同一个域上,为什么那些 xmls 试图被获取?是因为我使用的是 DNS 而不是 IP 地址吗?我还偶然发现了这个网站: http: //msdn.microsoft.com/en-us/library/ff921170 (v=pandp.20).aspx

它指出:为避免跨域调用问题,远程模块的 XAP 文件应位于与主应用程序相同的域中;当像这样部署时,ModuleCatalog 上的 Ref 属性应该是相对于 Web 服务器上的主 XAP 文件位置的统一资源标识符 (URI)。

那有什么意思??

编辑

好的,所以我将服务更改为指向 https 而不是 http。但是出现了新错误:提供的 URI 方案“https”无效;预期的http。

好消息是,它甚至不检查 crossdomain.xml 或 clientaccesspolicy.xml;所以它现在意识到它在同一个域上。但现在它需要在端口 80 上提供服务,但名称必须遵循 https:// 才能使其工作。

我认为我现在唯一的解决方案是将其作为虚拟目录断开,使其成为自己网站的根节点,并将整个内容设置为 443。免去我的头疼。

4

1 回答 1

1

听起来您正在使用负载均衡器卸载 SSL 流量的环境中工作。在这种情况下,您的客户端 (Silverlight) 需要配置为 HTTPS,您的服务器必须配置为 HTTP。这是因为双方之间的设备正在解密 SSL 数据。

在这种情况下,除了正常的客户端和服务器端配置之外,您的服务器端代码需要对请求的地址更加宽容。

您可能还需要向您的服务实现添加一个属性,以允许您的客户端通过 HTTPS 调用,但让您的服务侦听 HTTP。

将此添加到您的服务中:

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]

这允许您的客户端调用https://my.domain.com/service.svc并让您的服务器位于http://my.domain.com/service.svc

以下是一些可能也有帮助的链接:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/b5ae495b-f5fb-4eed-ae21-2b2280d4fec3/address-filter-mismatch-wcf-addressing

http://www.im-code.com/blog/blog/2011/11/30/hosting-silverlight-over-http-under-f5-big-ip/

http://www.im-code.com/blog/blog/2011/08/18/hosting-silverlight-under-https/

于 2013-09-27T02:24:18.117 回答