2011-12-02 41 views
0

我想打電話從域web服務與域B的C#代碼,我曾嘗試與網絡服務的網址添加Web引用,但它給像調用WebService的在跨域

There was an error downloading 'http://localhost:15666/MailBox/'. 
Unable to connect to the remote server 
No connection could be made because the target machine actively refused it 127.0.0.1:15666 
There was an error downloading 'http://localhost:15666/MailBox/$metadata'. 
Unable to connect to the 

我錯誤由於跨域,我有很多問題。有沒有解決方案?

+0

我不相信C#受跨域請求的限制。實際上,您應該如何處理跨域請求,方法是將其發送到您的後端以獲取信息。 –

回答

0

嗨,最後我得到了我的問題的答案,這是crossdomain沒有問題,但我得到的問題,因爲我沒有創建迪斯科文件或WSDL文件爲我的web服務,所以我得到的metadata.I錯誤。我在本地運行我的web服務獲取WSDL文件從那裏創建新的WSDL文件爲我的WEB SERVICE和繁榮...問題解決了。感謝您的全力幫助...

0

由於您已請求localhost上的Web服務,因此這不是跨域問題。我懷疑你需要更新你的引用來指向另一臺機器上的Web服務。

+0

其實我的Web服務和C#代碼,調用該Web服務是在不同的域名,所以我認爲這是因爲不同的域名或一些權限問題。我可以從同一臺機器調用Web服務沒有任何問題 – Hiren

+0

是的,但您的錯誤信息是明確引用本地機器。我認爲當你執行產生異常的代碼時,你並沒有指向另一臺機器。 –

+0

我認爲你是對的,可能是我輸入了錯誤的URL,我會嘗試在這個方向 – Hiren

-1

您必須創建一個文件(clientaccesspolicy.xml)並將其放入wwwroot目錄或Web服務的主目錄中。該文件的

內容應該是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-request-headers="*"> 
     <domain uri="*"/> 
     </allow-from> 
     <grant-to> 
     <resource path="/" include-subpaths="true"/> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 

您可以在To use a clientaccesspolicy.xml file to allow cross-domain access

+0

我試試這個clientaccesspolicy.xml文件。但我認爲這將只適用於silverlight,在我的情況下它不給任何幫助。任何方式謝謝你 – Hiren

0

您的問題,瞭解更多有關(至少你粘貼的除外)無關,與調用Web服務另一個域名。它表明您的計算機(本地主機)已關閉端口15666,因此您會收到actively refused it錯誤消息。您要麼不在該端口上運行您的Web服務,要麼您的Windows防火牆阻止了連接,儘管這是非常不可能的,因爲防火牆通常接受來自本地主機的連接。

您可以隨時通過telneting到您感興趣的特定端口上的localhost或使用nmap掃描您自己的端口來檢查此類事情。