Междоменный вызов службы WCF - PullRequest
3 голосов
/ 15 июля 2011

У меня есть служба WCF, это метод, который я бы назвал:

    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
    double?[] GetPoints(string tourname);

Я проверил WCF Test Client, он отлично работает

Поэтому мне нужно вызватьэтот метод из HTML-страницы.Он должен работать с другого компьютера, который является междоменным.

Я написал кое-что, используя jQuery 1-6-2.min.js:

var varType;
var varUrl;
var varData;
var varContentType;
var varDataType;
var varProcessData;

function CallService() {
        alert("CallService");
                $.ajax({
                    type          : varType, //GET or POST or PUT or DELETE verb
                    url           : varUrl, // Location of the service
                    data          : varData, //Data sent to server
                    contentType   : varContentType, // content type sent to server
                    dataType      : varDataType, //Expected data format from server
                    processdata   : varProcessData, //True or False
                    success       : function(msg) {//On Successfull service call
                    ServiceSucceeded(msg);                    
                    },
                    error: ServiceFailed// When Service call fails
                });
        }

function Start() {
    varType = "POST";
    varUrl = "http://localhost:1592/TourService.svc/GetPoints";
    varData = '{"tourname ":"customname"}';
    varContentType = "application/json; charset=utf-8";
    varDataType = "json";
    varProcessData = true; 
    CallService();
}

function ServiceSucceeded(result) {
    alert("ServiceSucceeded");
    alert(result);
}

function ServiceFailed(result) {
    alert('Service call failed: ' + result.status + ' ' + result.statusText);
    varType = null;
    varUrl = null;
    varData = null;
    varContentType = null;
    varDataType = null;
    varProcessData = null;
}

Однако функция ServiceFailed вызывается с сообщением "Ошибка вызова службы: 0 "

Как выполнить междоменный вызов службы WCF? (С использованием jQuery или нет)

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

В основном вам нужно использовать jSONP вместо jSON:

Использование jQuery & JSONP для междоменного AJAX со службами WCF

Я предоставлю резюмевскоре, если эта ссылка исчезнет.

Также см. документацию jQuery , чтобы узнать больше об использовании jSONP, jQuery & AJAX

1 голос
/ 15 июля 2011

.net framework 4 для wcf теперь имеет встроенный json callback,

Я думаю, что jquery1.5 и далее они добавили следующую опцию, crossDomain, попробуйте следующий код

$.ajax({
    type: "POST",
    dataType: "html",
    crossDomain: true,
    url: "http://www.domain.com/page.aspx",
    error: function() {
        alert("error");
    },
    success: function(msg){
        alert(msg );
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...