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