2013-09-30 28 views
3

我创建了一个在Windows计算机上运行的自托管WCF服务。现在我想使用AJAX调用来使用服务的操作。无论是在iExplorer,Firefox还是Chrome浏览器中,我都会得到所需的JSON流。如何为自己托管的WCF服务启用跨域调用

为了允许跨域调用,我必须添加到自托管服务中?

问候 西蒙

+0

你用什么约束力? WCF服务如何托管(进程?IIS?) –

+1

webHttpBinding,并且它作为服务托管在Windows中,使用ServiceBase.Run(new ioNotificationService()); – Simon

回答

-1

对于服务GetPerson托管在localhost \ Service.mv​​c使用:

$.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

+0

但是,这是否回答了关于跨域调用的问题?我不这么认为。如果此JQuery代码托管在与服务不同的域上,则此代码将失败,换句话说,您的浏览器将执行ajax请求,但不会接收任何数据。这是我的问题。 – Simon

+0

你可以从客户端计算机ping服务器计算机?你可以通过ping 来解析名称(通常通过ping ? 如果是这样 - 把()作为你的URL。 –

+0

是的我可以到达服务器,请求返回HTTP/1.1 200 OK但是没有收到JSON数据流 – Simon

1

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

+0

那么该文章建议添加[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]。从ASP我认为这篇文章是指一个网站托管服务。我的问题涉及自我托管的服务。 – Simon

+0

有人知道自我托管服务的解决方案吗? – Simon