2011-12-02 37 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扫描您自己的端口来检查此类事情。