Silverlight中的clientaccesspolicy.xml

时间:2010-09-04 09:11:07

标签: c# .net silverlight wcf

我意识到这个问题已被问过100次,但是我已经查看了其他答案,找不到适合我的解决方案。我有一个SilverLight 4项目,其中包含一个WCF服务。每次我向服务提出请求时都会收到此错误:

  

尝试制作时发生错误   对URI的请求   'http://localhost:54998/MyService.svc'。   这可能是由于尝试   以跨域方式访问服务   没有适当的跨域政策   到位,或政策   不适合SOAP服务。你可以   需要联系的所有者   服务以发布跨域   策略文件并确保它允许   要发送的与SOAP相关的HTTP标头。   使用此错误也可能是由此引起的   Web服务中的内部类型   没有使用的代理   InternalsVisibleToAttribute属性。   请查看内部异常   更多细节。

我已经读过,当我在本地运行时,我的项目将不会使用IIS,因此在本地主机根目录中添加clientaccesspolicy.xml毫无意义是毫无意义的(无论如何我都添加了它以防万一)。我需要做什么?

编辑--- 这是我得到的内在异常

  

{System.Security.SecurityException:   安全错误。在   System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult的   asyncResult)at   System.Net.Browser.BrowserHttpWebRequest<> c__DisplayClass5.b__4(对象   sendState)at   System.Net.Browser.AsyncHelper。<> c__DisplayClass2.b__0(Object sendState)}

由于

2 个答案:

答案 0 :(得分:1)

听起来您需要将Web服务项目合并到为客户端提供Silverlight应用程序的网站项目中。

答案 1 :(得分:0)

如果从与托管WCF服务的域不同的域上的站点提供Silverlight应用程序(如果端口号发生更改,则将其视为跨域),则需要在根目录中放置clientaccesspolicy.xml托管WCF服务的站点,以便Silverlight应用程序可以通过以下方式访问它:

http://localhost:54998/clientaccesspolicy.xml

然后它将调用服务:

http://localhost:54998/MyService.svc