C# 从另一个域调用ASMX web服务

C# 从另一个域调用ASMX web服务,c#,jquery,.net,asmx,C#,Jquery,.net,Asmx,我的网站上运行着ASMXWeb服务,我的应用程序运行良好。应用程序使用jqueryajax从web服务请求数据 现在,我在另一个站点或域上有了另一个页面,在该文件中,我添加了对javascript文件的绝对引用,该文件具有jQueryAjax调用。这是行不通的。我一直在读,客户端访问策略文件和跨域文件应该被添加。我已将其添加到第一个站点的根目录中,如下所示: clientaccesspolicy.xml <?xml version="1.0" encoding="utf-8"?> &

我的网站上运行着ASMXWeb服务,我的应用程序运行良好。应用程序使用jqueryajax从web服务请求数据

现在,我在另一个站点或域上有了另一个页面,在该文件中,我添加了对javascript文件的绝对引用,该文件具有jQueryAjax调用。这是行不通的。我一直在读,客户端访问策略文件和跨域文件应该被添加。我已将其添加到第一个站点的根目录中,如下所示:

clientaccesspolicy.xml

<?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-a
成功率>

crossdomain.xml

<?xml version="1.0" encoding="utf-8" ?>
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>
但这不起作用,请有人帮我理解我可能会出什么问题


提前感谢。

这是一整罐蠕虫,除非您使用HTML5特有的功能,否则没有简单的解决方案。一种选择是让你的ASMX服务返回JSONP,也许有一个单独的服务副本可以这样做,这将涉及对你的jQuery代码进行一些更改,但这可能是最简单的方法。我认为访问控制Allow Origin很简单,可以全局应用于我的服务,这样任何客户端都可以访问它。不,它在某些浏览器中工作,但在其他浏览器中不工作,等等。。。这是可能的,但根据我的经验,这是一个主要的PIA。如果你可以选择使用JSONP,那就这么做吧——你会节省很多时间和精力。好的,JSONP,任何关于如何使用好的旧asmx服务的好例子都是,它只是普通的JSON,但包装在Javascript函数调用中。这可能是一个好的开始:。然而,我应该提到JSONP是非常有黑客性的;它肯定比CORS更容易实现您想要实现的功能,但它相当笨重。但是,它应该适用于所有浏览器。CORS方法是正确的方法,但在旧版本的IE上不起作用,并且在某些浏览器上支持错误。以下是支持CORS的完整浏览器列表: