silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight WCF SSL安全性错误 – 从未请求过crossdomain.xml大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

(我看到几个与我的问题有关的问题,但是没有一个解决方案适合我,因为我在生产中遇到这个问题,而不是在本地开发中,我已经尝试了所有提议的修复.) 我有一个使用IIS托管的WCF服务的Silverlight 4应用程序.在生产中,这些服务通过httpS访问.尽管有a valid crossdomain.xml文件,我仍然在访问服务时得到着名的“安全错误”: 尝试向URI“https://MYDOMAIN
(我看到几个与我的问题有关的问题,但是没有一个解决方案适合我,因为我在生产中遇到这个问题,而不是在本地开发中,我已经尝试了所有提议的修复.)

我有一个使用IIS托管的WCF服务的Silverlight 4应用程序.在生产中,这些服务通过httpS访问.尽管有a valid crossdomain.xml文件,我仍然在访问服务时得到着名的“安全错误”:

尝试向URI“https://MYDOMAIN/MYserviCE.svc”发出请求时发生错误.这可能是由于尝试在没有适当的跨域策略的情况下以跨域方式访问服务,或者是不适合SOAP服务的策略.您可能需要联系服务的所有者以发布跨域策略文件,并确保它允许发送与SOAP相关的http标头.在不使用InternalsVisibleToAttribute属性的情况下,在Web服务代理中使用内部类型也可能导致此错误.有关更多详细信息,请参阅内部异常. —> System.Security.SecurityException —> System.Security.SecurityException:安全错误

使用fiddler我可以看到没有请求crossdomain.xml或clientaccesspolicy.xml.一个CONNECT请求到服务器,但这就是全部.

我已经读过,当服务器发出无效证书时,也会引发此错误,尽管它表示有crossdomain.xml / clientaccesspolicy.xml的问题.在我的场景中似乎并非如此.

我确定以下设置正确:
1. crossdomain.xml有效并托管在站点的根目录中
2.服务确实有效(我们有其他客户使用各种技术,包括依赖于crossdomain.xml的Adobe Flex.)
3. Silverlight应用程序确实有效(在共享开发服务器上可以正常使用本地服务和服务***)
4. Silverlight应用程序甚至不尝试请求crossdomain.xml或clientaccesspolicy.xml(由fiddler确认)
5. Silverlight应用程序使用适当的配置通过https访问WCF.以下是配置:

<configuration>  
    <system.serviceModel>  
        <bindings>  
            <basichttpBinding>  
                <binding name="BasichttpBinding_IMyservices" maxBufferSize="2147483647" maxReceivedmessageSize="2147483647">  
                    <security mode="Transport" />  
                </binding>  
                </basichttpBinding>  
        </bindings>  
        <client>  
            <endpoint address="https://MYDOMAIN/MYserviCE.svc" binding="basichttpBinding" bindingConfiguration="BasichttpBinding_IMyservices" contract="services.IMyservices" name="BasichttpBinding_IMyservices" />  
        </client>  
    </system.serviceModel>  
</configuration>

还有什么可以导致这种问题?可能是因为Web服务器负载均衡?或者我没有注意到证书有问题吗?如果你能够至少指出我正确的方向,那将非常感激.

(***值得一提的是:我在开发环境中遇到了类似的问题.尽管有一个合适的crossdomain.xml而且没有使用httpS,Silverlight应用程序无法在共享开发服务器上访问WCF服务.我在周围工作它通过在IE中将开发服务器添加为可信站点.然而,这种相同的解决方法不适用于生产,即使这样也不是一种可接受的解决方法.但是我必须在开发环境中这样做的事实使我担心我一路上都错过了什么……)

解决方法

问题是我缺少clientaccesspolicy.xml.在这种情况下,使用crossdomain.xml是不够的.我认为这是因为WCF@L_772_38@不仅仅是跨浏览器而且是跨协议(Silverlight应用程序是通过http提供的,但服务是通过https提供的).

另外,我的clientaccesspolicy.xml必须明确允许访问http,如下所示:

<?xml version="1.0" encoding="utf-8"?>  
<access-policy>  
    <cross-domain-access>  
        <policy>  
            <allow-from http-request-headers="SOAPAction">  
                <!-- IMPORTANT! Include these lines -->
                <domain uri="http://*"/>  
                <domain uri="https://*"/>  
            </allow-from>  
            <grant-to>  
                <resource path="/" include-subpaths="true"/>  
            </grant-to>  
        </policy>  
    </cross-domain-access>  
</access-policy>

它现在就像一个魅力.

一路上让我绊倒的事情:*我的浏览器正在缓存clientaccesspolicy.xml和crossdomain.xml.每次我更改其中一个文件时我都必须清除缓存,否则它将无法识别新版本,尽管IIS配置为阻止客户端缓存此文件.*对clientaccesspolicy.xml和crossdomain.xml的请求并不总是出现在fiddler中.我经常会看到CONNECT请求.我不明白这个的原因,但我已经学会了不依赖fiddler确认这些请求正在进行中.也许我在某个地方有一些流氓设置(并且不是我已经禁用的“Decrypt httpS流量”设置).

大佬总结

以上是大佬教程为你收集整理的Silverlight WCF SSL安全性错误 – 从未请求过crossdomain.xml全部内容,希望文章能够帮你解决Silverlight WCF SSL安全性错误 – 从未请求过crossdomain.xml所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。