Может ли служба WCF с поддержкой Ajax передавать DataTable как Sys.Data.DataTable? - PullRequest
1 голос
/ 18 декабря 2008

Может ли служба WCF с поддержкой Ajax передавать DataTable как Sys.Data.DataTable? Как это , но в WCF.

Мой OperationContract выглядит так:

    [OperationContract]
    public DataTable GetEmployees()
    {
        NorthwindService ns = new NorthwindService();
        return ns.GetEmployees();
    }

Через консоль ошибок Firefox я получаю сообщение:
Ошибка: элемент не найден
Исходный файл: http://localhost:4845/TestWcfAjax/SomeService.svc/GetEmployees

Если я введу этот URL (выше) в браузер, я получу:
Метод не разрешен.

У меня есть другой метод, который просто возвращает строку, которая работает через Ajax WCF / ASP.NET.
Мысли? Идеи устранения неполадок?

в коде нет кода
Редактировать / добавить код:
Код не понять, как вставить код здесь в удобочитаемом виде
код расположен здесь:
http://www.mirc.org/paste/92

1 Ответ

3 голосов
/ 18 декабря 2008

Вы получаете ошибку Method not allowed, потому что HTTP-глагол по умолчанию для вызовов веб-службы - это POST, а когда вы просто набираете URL в веб-браузере, глагол - GET. Используйте инструмент отладчика HTTP, например Fiddler, для имитации запросов POST. Также покажите код, который вызывает эту службу, чтобы мы могли увидеть проблему.

PS. Кроме того, из того, что я помню, я думаю, что вы не можете просто вернуть DataTable из вызова веб-службы, вам нужно иметь его внутри DataSet, чтобы он был правильно сериализован.

Хорошо, я понял, что глагол GET был вопрос. Любой способ разрешить запрос GET для устранения неполадок? Есть ли Sys.Data.DataSet на стороне клиента? я имею установил фидлер попробую. - Бруно Тиндалл (9 минут назад) [удалить этот комментарий]

Нет, на стороне клиента нет структуры DataSet, вы просто вернете XML, который сможете анализировать. Чтобы включить GET вместо POST, украсьте свою операцию следующим дополнительным атрибутом:

[ WebInvoke( Method = "GET", BodyStyle = WebMessageBodyStyle.Bare,
  RequestFormat = WebMessageFormat.Xml,
  ResponseFormat = WebMessageFormat.Xml ) ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...