簡體   English   中英

Silverlight跨域問題與WCF自托管在Windows服務中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM