我有一个在我的本地计算机上运行完美的Silverlight应用程序,从开发服务器(在Windows服务中自托管)中使用WCF服务。
我必须调试其中一个WCF服务,以便找到错误的根本原因。我在服务中添加了调试/跟踪信息,并安装在虚拟机中(甚至在本地),但从那时起,我得到了众所周知的跨域错误:
“尝试向URI发出请求时发生错误 的 'http:// MyVMMachine:4096 /为MyService'。这可能是由于尝试 在没有适当的情况下以跨域方式访问服务 适当的跨域策略,或不适合SOAP的策略 服务。您可能需要联系服务所有者进行发布 跨域策略文件,并确保它允许与SOAP相关的HTTP 要发送的标头。使用内部也可能导致此错误 Web服务代理中的类型,而不使用 InternalsVisibleToAttribute属性。请查看内部异常 了解更多详情。“
这很奇怪,因为如果从开发服务器消费,它可以正常工作,但如果在开发机器中安装服务,甚至在本地(在Windows服务中自托管),它也不起作用。
以下是服务原始代码:
public partial class WindowsService : ServiceBase
{
ServiceHost _Host;
public WindowsService()
{
try
{
InitializeComponent();
}
catch (Exception exc)
{
Server.One.Log("Windows service initialization failed: " + exc.Message);
}
}
protected override void OnStart(string[] args)
{
try
{
Server.One.Start();
_Host = new ServiceHost(typeof(Service));
_Host.Open();
}
catch (Exception exc)
{
Server.One.Log("Windows service start failed: " + exc.Message);
}
}
protected override void OnStop()
{
try
{
if (_Host != null)
_Host.Close();
Server.One.Stop();
}
catch (Exception exc)
{
Server.One.Log("Windows service stop failed: " + exc.Message);
}
}
}
在阅读Carlos Figueira's article关于此主题后,我改变了应用他的方法的服务,但仍然没有工作。
任何想法???
谢谢!
答案 0 :(得分:0)
尝试使用fiddler查看您的应用程序在哪里真正要求您提供服务。
这种情况发生在我身上几次,通常是因为服务器端口更改8 - )
只需将ServiceReferences.ClientConfig更改为服务器端口。
查看您的服务项目配置(Web选项卡),如果要在那里调用,请将特定端口设置为4096: