[英]Silverlight Cross-domain issue with WCF self-hosted in windows service
我有一个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)关于该主题的文章后 ,我使用他的方法更改了服务,但仍然无法正常工作。
有任何想法吗???
谢谢!
尝试与提琴手一起看看您的应用程序真正在哪里请求您的服务。
这发生在我身上几次,通常是因为服务器端口更改8-)
只需将ServiceReferences.ClientConfig更改为服务器端口即可。
查看您的Service项目配置(Web选项卡),如果要在此调用特定端口,则将其设置为4096:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.