我有一个 Silverlight 应用程序,它在我的本地机器上完美运行,使用 WCF 服务形成一个开发服务器(在 Windows 服务中自托管)。
我必须调试其中一个 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关于此主题的文章后,我应用他的方法更改了服务,但仍然无法正常工作。
有任何想法吗???
谢谢!