2013-09-30 61 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