Сбой работы службы ADO.Net Services с параметрами, вызываемыми из клиентской библиотеки - PullRequest
1 голос
/ 02 апреля 2009

Консольное приложение

var result = dataService.CreateQuery<Customers>("GetCustomerByLastName").
    AddQueryOption("lastname", "S");

Услуги

    [WebGet]
    public IQueryable<Customers> GetCustomerByLastName( string lastname )
    {
       return   from c in this.CurrentDataSource.Customers
                where c.LastName.StartsWith( lastname )
                select c ; 
    }                  

Результат: (относительно http://localhost:1478/Apress.Data.Services.CustomerService.Host/)

RequestUri: CustomerDataService.svc / GetCustomerByLastName ()? Фамилия = S

и завершается ошибкой из-за скобок в uri, которые не ожидаются.

CustomerDataService.svc / GetCustomerByLastName? Lastname = 'S'

работает в браузере.

VS 2008 SP1.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2009

Оказалось, что проблема не связана с круглыми скобками, мне не хватало строкового литерала одинарных кавычек

должно быть

AddQueryOption("lastname", "'S'");

но

GetCustomerByLastName()?lastname='S'

и

GetCustomerByLastName?lastname='S'

верно для служб данных ADO.Net.

0 голосов
/ 02 апреля 2009

Вы, наверное, уже пробовали это, но что происходит без AddQueryOption? Я знаю, что это не будет передавать параметр, но это меняет проблему с круглыми скобками? Кроме того, что произойдет, если вы сделаете это и измените службу, чтобы не требовать параметр? Тот же вопрос о скобках.

Наконец, если это окажется ошибкой, пожалуйста, сообщите об этом на Connect . Затем опубликуйте URL-адрес здесь, чтобы мы могли проголосовать за то, насколько важной для нас является проблема. Обязательно сначала выполните поиск, чтобы узнать, сообщил ли это кто-то еще.

...