Нет ответа от службы WCF, вызванной через AJAX - PullRequest
1 голос
/ 13 мая 2011

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

У меня есть веб-сервис WCF, использующий webHttpBinding, который я пытаюсь вызвать с веб-страницы с помощью вызова jquery $ .ajax ().

serviceFailed = function (a, b, c) {
    alert('Failure: ' + c);
}

$.ajax({
    type: "GET",
    url: "http://localhost/KasraNet.Services.Centurian.WebService/CenturianAdmin.svc/bob",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    processdata: true,
    error: serviceFailed,
    success: function (msg) {
        alert('Success: ' + msg);
    }
});

При запуске выдается предупреждение об успешном завершении, но сообщение пустое.

Используя FireBug, я вижу, что ответ полностью пустой, а при использовании HttpFox возвращается ошибка NS_ERROR_DOM_BAD_URI. Я не вижу, как это связано с кросс-браузерной проблемой, так как я перехожу на localhost, и служба также работает на той же машине (я даже пытался изменить localhost на имя машины без успеха).

Служба определяется таким образом.

<OperationContract(), DataContractFormat()>
<WebInvoke(BodyStyle:=WebMessageBodyStyle.Wrapped, Method:="GET", ResponseFormat:=WebMessageFormat.Json)> _
Function bob() As String

Заголовки запроса и ответа для вызова ajax:

Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 (.NET CLR 3.5.30729)
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Origin: null

Server: Microsoft-IIS/5.1
Date: Fri, 13 May 2011 14:20:53 GMT
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Content-Length: 19
Cache-Control: private
Content-Type: application/json; charset=utf-8

Любая помощь будет принята с благодарностью - я действительно начинаю вырывать волосы!

EDIT: Теперь интересно, если я вставлю URL в адресную строку браузера, начнется загрузка с результатами метода сервиса в формате json.

Спасибо John

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Хорошо, я немного оцепенелый череп.

Я подумал о междоменной проблеме и понял, что открываю прямую ссылку на файл, а не через IIS.

Создание VD и открытие страницы через это, результаты, которые я ожидал, вернулись.

Спасибо, что нашли время взглянуть на эту проблему, и извините, что потратили время.

0 голосов
/ 13 мая 2011

Данные в вашем запросе, скорее всего, проблема:

  • Ваша функция WCF не ожидает ввода данных.

  • Поскольку вы передаете строку в качестве данных (она выглядит как пустой объект JSON, но на самом деле это строка), jQuery добавит ее к URL-адресу следующим образом: http://localhost/KasraNet.Services.Centurian.WebService/CenturianAdmin.svc/bob?{} Но это недопустимый URL-адрес и IIS отклонит его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...