Почему моя служба данных WCF не принимает мою строку запроса? - PullRequest
0 голосов
/ 11 августа 2011

Я использую jqGrid для отображения некоторых данных пользователю. Одной из функций, необходимых для пользователей, является возможность поиска в сетке. Я использую Службу данных WCF, чтобы получить эти данные и вернуть их.

Когда я только начал разработку jqGrid, мне просто нужно было разбить на страницы (поиск не требовался) и я смог успешно использовать следующий метод:

[WebGet(ResponseFormat = WebMessageFormat.Json)]
public String GetStuff(int? page, int? rows)
{ 
    // pagination going on in here
}

Затем мне понадобился поиск, поэтому я добавил параметр типа string примерно так:

[WebGet(ResponseFormat = WebMessageFormat.Json)]
public String GetStuff(int? page, int? rows, string search)
{ 
    // more stuff going on in here
}

и тогда я получаю 400 Bad Request ошибку. Я предполагаю, что это из-за параметра поиска, я просто не понимаю, почему int работает (и даже bool работает), но string нет. Связано ли это с тем, что службы данных WCF являются RESTful?

Я, конечно, дважды проверил строку запроса, которую jqGrid отправляет (через ajax), и она соответствует имени параметра. Есть некоторые дополнительные строковые параметры запроса, которые отправляет jqGrid, которые не используются (игнорирование их работало нормально с моим исходным кодом разбиения на страницы)

1 Ответ

1 голос
/ 11 августа 2011

Строковые литералы в URL запроса должны заключаться в одинарные кавычки.Таким образом, вышеуказанная сервисная операция будет вызываться так: / GetStuff? Page = 1 & row = 10 & search = 'John' Ваша строка запроса выглядит так?

...