我看到几个与我的问题相关的问题,但没有一个解决方案适用于我,因为我在生产环境中遇到了这个问题,而不是在本地开发期间,并且我已经尝试了所有建议的修复方法。
我有一个Silverlight 4应用程序,使用IIS托管的WCF服务。在生产环境中,这些服务通过HTTPS访问。尽管有有效的crossdomain.xml文件,但在访问服务时仍会出现著名的“安全错误”。
发生错误时尝试请求URI 'https://MYDOMAIN/MYSERVICE.svc'。这可能是由于企图在没有适当的跨域策略的情况下以跨域方式访问服务,或者策略不适用于SOAP服务所致。您可能需要联系服务所有者发布一个跨域策略文件,并确保它允许发送与SOAP相关的HTTP标头。此错误也可能是由于在Web服务代理中使用内部类型而未使用InternalsVisibleToAttribute属性引起的。请参阅内部异常以获取更多详细信息。--->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。以下是配置:
什么还会导致这种问题?可能是因为Web服务器负载均衡吗?或者是证书出了问题,我没有注意到?如果你能至少指出正确的方向,将不胜感激。
(***有一件值得指出的事情:在我们的开发环境中遇到过类似的问题。尽管拥有适当的crossdomain.xml文件且未使用HTTPS,Silverlight应用程序无法访问共享开发服务器上的WCF服务。我通过将开发服务器添加为IE中的受信任站点来解决了这个问题。然而这个同样的解决方法对于生产环境不起作用,即使起作用也不是一个可接受的解决方法。但是,我在开发环境中必须这样做使我担心我在路上错过了什么……)
我有一个Silverlight 4应用程序,使用IIS托管的WCF服务。在生产环境中,这些服务通过HTTPS访问。尽管有有效的crossdomain.xml文件,但在访问服务时仍会出现著名的“安全错误”。
发生错误时尝试请求URI 'https://MYDOMAIN/MYSERVICE.svc'。这可能是由于企图在没有适当的跨域策略的情况下以跨域方式访问服务,或者策略不适用于SOAP服务所致。您可能需要联系服务所有者发布一个跨域策略文件,并确保它允许发送与SOAP相关的HTTP标头。此错误也可能是由于在Web服务代理中使用内部类型而未使用InternalsVisibleToAttribute属性引起的。请参阅内部异常以获取更多详细信息。--->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中的受信任站点来解决了这个问题。然而这个同样的解决方法对于生产环境不起作用,即使起作用也不是一个可接受的解决方法。但是,我在开发环境中必须这样做使我担心我在路上错过了什么……)