Silverlight WCF 返回HTTP 404错误

 原文地址:http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/07/19/Silverlight-WCF-HTTP-404.aspx

今天我遇到了很奇怪的事。我创建了一个WCF服务并且用简单的.Net客户端程序测试时,运行正常。然后我创建了一个Silverlight程序并尝试着调用同一个服务,但是总是得到如下消息:System.ServiceModel.ProtocolException: "The remote server returned an unexpected response: (404) Not Found."

我只检查出由于WCF调用的是一个跟我的Silverlight程序(或者与本地开发机器上不同的端口)不在同一个域下的服务。这种情况导致了交叉的域调用,然后Silverlight请求运行该WCF服务的域允许它的这种调用。可以通过放一个名为clientaccesspolicy.xml的文件到该域的根目录下面解决此问题。

所以,为了让你的Silverlight能够成功调用一个WCF服务而不是得到HTTP 404的返回错误,你应该把clientaccesspolicy.xml放到c:"inetpub"wwwroot".

此文件的内容为:

<?xml version="1.0" encoding="utf-8"?>

<access-policy>

  <cross-domain-access>

    <policy>

      <allow-from http-request-headers="*">

        <domain uri="*"/>

      </allow-from>

      <grant-to>

        <resource path="/" include-subpaths="true"/>

      </grant-to>

    </policy>

  </cross-domain-access>

</access-policy>

当然了,你应该根据你自己的配置来设定它。

以上这些就是解决Silverlight程序调用WCF时返回HTTP 404错误的方法!

希望你喜欢!

你可能感兴趣的:(silverlight)