2011-05-09 66 views
1

我有一个托管在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.xmlclientaccesspolicy

我想从我的浏览器和XML文件访问上述两个文件在浏览器中正确显示。我已经使用basicHttpBinding。我在网上看过很多教程,并尝试过它们,但仍面临同样的问题。我在这里错过了什么吗?请帮我解决这个问题。

回答

0

只是为了澄清,您只需要CrossDomain.xml文件或ClientAccessPolicy.xml文件。你不需要两个。另外,你把这些文件放在哪里?你把它放在Services文件夹中,还是放在服务器的根目录下?例如,http://test.bookmyshow.com/ClientAccessPolicy.xml而不是http://test.bookmyshow.com/Services/ClientAccessPolicy.xml。该文件应放在应用程序的根目录下,而不是Services文件夹。

+0

谢谢您的回复。我已将该文件放在services文件夹中。这是正确的位置吗?出于好奇,如果我在我的Web服务中同时包含了crossdomain.xml和clientaccesspolicy.xml文件,是否有任何伤害 – Madhur2479 2011-05-10 05:46:11

+0

更新了我的答案。该文件应位于应用程序的根目录下,而不是服务文件夹。两者都没有技术上的危害 - Silverlight会先检查一个。但是这意味着您必须保持两个文件都是最新的,并且这会造成一个可能的安全漏洞(如果您的特定应用程序在意这一点)。 – 2011-05-10 14:13:56

相关问题