跨域调用WebService

本文关键字:WebService 调用 | 更新日期: 2023-09-27 18:16:26

我想用域b中的c#代码从域A调用web服务。我试图添加web引用与该web服务的URL,但它给出了错误,如

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 

由于跨域,我有很多问题。有什么解决办法吗?

跨域调用WebService

由于您已经在本地主机上请求了web服务,因此这不是跨域问题。我怀疑你需要更新你的引用,以指向另一台机器上的web服务。

您的问题(至少您粘贴的例外)与在另一个域中调用web服务无关。它表明您的机器(本地主机)关闭了端口15666,因此您会收到actively refused it错误消息。您要么没有在该端口上运行web服务,要么您的windows防火墙阻止了连接,尽管这是非常不可能的,因为防火墙通常接受来自本地主机的连接。

您总是可以通过在您感兴趣的特定端口上发送远程消息到本地主机或使用nmap扫描您自己的端口来检查这类事情。

嗨,我终于得到了我的问题的答案,这不是跨域的问题,但我得到了问题,因为我没有为我的webservice创建disco文件或WSDL文件,所以我得到元数据错误。我在本地运行我的WEB服务,从那里获取WSDL文件,并为我的WEB服务创建新的WSDL文件,然后…问题解决了,谢谢你的帮助…

您必须创建一个文件(clientaccessppolicy .xml)并将其放入wwwroot目录或您的webservice的主目录。

文件的内容应该像:

<?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>
使用clientaccessppolicy .xml文件来允许跨域访问