我意识到这个问题已被问过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)}
由于
答案 0 :(得分:1)
听起来您需要将Web服务项目合并到为客户端提供Silverlight应用程序的网站项目中。
答案 1 :(得分:0)
如果从与托管WCF服务的域不同的域上的站点提供Silverlight应用程序(如果端口号发生更改,则将其视为跨域),则需要在根目录中放置clientaccesspolicy.xml托管WCF服务的站点,以便Silverlight应用程序可以通过以下方式访问它:
http://localhost:54998/clientaccesspolicy.xml
然后它将调用服务:
http://localhost:54998/MyService.svc