我正在通过他创建的一些Web服务(主要涉及LINQ to SQL)访问SQL Server(2008 Express)的网站上使用另一个编码器,UI是在Silverlight中。我一直在研究系统的另一部分,但刚刚得到他最新的代码,并试图在我的机器上运行它,但遇到了错误。CommunicationException从Silverlight应用程序调用的Web服务的异步回调
这是在reference.cs文件中的一个行的CommunicationException,该Web服务的EndXXX方法:
// This is for a Ping method we created just to trouble shoot- it behaves the same.
public string EndPing(System.IAsyncResult result) {
object[] _args = new object[0];
// Next line throws Communication Exception
string _result = ((string)(base.EndInvoke("Ping", _args, result)));
return _result;
}
的错误信息是:试图让
“时发生错误对URI'http://localhost:1233/SummitService.svc'的请求,这可能是因为尝试以跨域方式访问服务而没有适当的跨域策略或者不适合SOAP服务的策略您可能需要联系该服务的所有者发布跨域策略文件并确保它允许发送与SOAP相关的HTTP头。 “
整个堆栈在我的本地机器上,所以我不应该需要进行任何跨域调用。我们查看了所有可以找到的配置代码(web .config,ServiceReferences.ClientConfig),将所有对他的机器的引用都改为我的。对于所有这些技术我们都很新,所以我们已经运行到了我们的知识末端。钟声任何人?
UPDATE
所以我做了一些故障排除,发现如果我输入启动整个事件的aspx页面的localhost地址,它会正常加载,并且我在页面上看到来自webservice的数据。只有当我调试时,我得到这个错误。
我还注意到,当我尝试和调试页面时,它正在将文件位置 - D:\ projects \ etc - 加载到浏览器中,而不是通过本地主机。它实际上是加载项目中的.html测试页面,即使我已经将.aspx页面设置为起始页面。
所以它看起来与项目设置或VS2008设置有关,而不是像我第一次假设的配置问题。有没有人有任何其他建议?
感谢您的建议。我试过了,但没有运气。说实话,虽然我提供了所有用于完整性的技术,但“Ping”Web服务(它只是返回一个字符串文本)具有相同的问题,这让我认为这对服务来说很简单。希望我知道什么! – TwainJ 2009-01-22 19:08:52