【问题标题】:How to enable cross domain calls for self hosted WCF service如何为自托管 WCF 服务启用跨域调用
【发布时间】:2013-10-06 10:04:30
【问题描述】:

我创建了一个在 Windows 机器上运行的自托管 WCF 服务。现在我想使用 AJAX 调用来使用服务的操作。在 iExplorer、Firefox 和 Chrome 中,我都没有得到预期的 JSON 流。

我必须向自托管服务添加什么才能允许跨域调用?

问候 西蒙

【问题讨论】:

  • 你使用什么绑定? WCF 服务如何托管(进程?IIS?)
  • webHttpBinding,它在 windows 中作为服务托管,使用 ServiceBase.Run(new ioNotificationService());

标签: c# ajax html wcf cross-domain


【解决方案1】:

http://pranayamr.blogspot.se/2011/06/calling-cross-domain-wcf-service-using.html 似乎是一篇有效的文章。您需要相应地配置您的服务。这在过去对我有用。

【讨论】:

  • 那篇文章建议添加 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]。在 ASP 中,我假设这篇文章是指 Web 托管服务。我的问题涉及自托管服务。
  • 有人知道自托管服务的解决方案吗?
【解决方案2】:
【解决方案3】:

对于托管在 localhost\Service.mv​​c 上的 Service GetPerson,请使用:

$.ajax({
            type: 'GET', //GET or POST or PUT or DELETE verb
            url: 'Service.svc/GetPerson', // Location of the service
            data: userid, //Data sent to server
            contentType: 'application/json; charset=utf-8', // content type sent to server
            dataType: 'json', //Expected data format from server
            processdata: true, //True or False
            success: function (data) {//On Successfull service call
                alert(data.Name);
            },
            error: function (msg) {// When Service call fails
                alert(msg);
            }
        });

链接:http://www.cleancode.co.nz/blog/1041/complete-example-wcf-ajax-ssl-http

【讨论】:

  • 但这是否回答了有关跨域调用的问题?我不这么认为。如果此 JQuery 代码托管在与服务不同的域上,则此代码将失败,或者换句话说,您的浏览器将执行 ajax 请求但不会接收任何数据。那是我的问题。
  • 你能从客户端电脑ping到服务器电脑吗?您可以解析名称(通常通过 ping . 吗?如果可以 - 将 (.) 作为您的 URL。
  • 是的,我可以到达服务器,请求返回 HTTP/1.1 200 OK 但没有收到 JSON 流。
  • 这看起来很奇怪。您确定您正在查看 REST 请求吗?我只是在其余 URL 中使用完整的计算机名称,一切都很好。
  • 非常感谢您的意见。当我在 url 栏中输入 web 服务的地址时,我得到一个 JSON 流,当我通过 html 页面发送 ajax 请求时,该页面没有收到任何 JSON 流。正如我所假设的,这是因为浏览器的跨域策略不允许对位于与调用 javascript 代码相同域的其他任何位置的 web 服务进行 ajaw 请求。对于 IIS 上的 Web 服务,我可以通过将文件添加到 Web 服务的根目录来解决此问题。但是对于作为 Windows 服务安装的自托管 Web 服务,我正在寻找新的答案。
猜你喜欢
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
相关资源
最近更新 更多