0

我有一个 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关于此主题的文章后,我应用他的方法更改了服务,但仍然无法正常工作。

有任何想法吗???

谢谢!

4

1 回答 1

0

尝试使用 fiddler 来查看您的应用程序在哪里真正需要您的服务。

这在我身上发生过几次,通常是因为服务器端口更改 8-)

只需将您的 ServiceReferences.ClientConfig 更改为服务器端口。

查看您的服务项目配置(web 选项卡)并将特定端口设置为 4096,如果您想在那里调用它:

在此处输入图像描述

于 2012-08-29T14:46:39.880 回答