我有一个托管在IIS上的.asmx Web服务。我接受了服务引用,并从我的Silverlight应用程序调用此Web服务。但是我收到一个通讯例外如下。从Silverlight调用.asmx服务时发生通信异常
错误,而试图让 到URI 'http://test.bookmyshow.com/services/wsDebtorTrans.asmx' 请求时发生。 这可能是由于尝试以 以跨域方式访问服务 而没有适当的跨域策略 或者是不适合SOAP服务的 策略。您可能需要 联系 服务的所有者以发布跨域 策略文件并确保允许发送与SOAP相关的HTTP标头 。 此错误也可能是由于在Web服务 代理中使用 内部类型而不使用 InternalsVisibleToAttribute属性造成的。 请参阅 的内部例外更多详情。
我已将所需的策略文件(clientaccesspolicy.xml和crossdomain.xml)添加到我的Web服务中。以下是我clientaccesspolicy.xml的内容和进crossdomain.xml
crossdomain.xml和clientaccesspolicy
我想从我的浏览器和XML文件访问上述两个文件在浏览器中正确显示。我已经使用basicHttpBinding。我在网上看过很多教程,并尝试过它们,但仍面临同样的问题。我在这里错过了什么吗?请帮我解决这个问题。
谢谢您的回复。我已将该文件放在services文件夹中。这是正确的位置吗?出于好奇,如果我在我的Web服务中同时包含了crossdomain.xml和clientaccesspolicy.xml文件,是否有任何伤害 – Madhur2479 2011-05-10 05:46:11
更新了我的答案。该文件应位于应用程序的根目录下,而不是服务文件夹。两者都没有技术上的危害 - Silverlight会先检查一个。但是这意味着您必须保持两个文件都是最新的,并且这会造成一个可能的安全漏洞(如果您的特定应用程序在意这一点)。 – 2011-05-10 14:13:56