views:

529

answers:

2

Console application

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

Service

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

results in: (relative to http://localhost:1478/Apress.Data.Services.CustomerService.Host/)

RequestUri: CustomerDataService.svc/GetCustomerByLastName()?lastname=S

and fails as a result , because of parentheses in uri , which are not expected.

CustomerDataService.svc/GetCustomerByLastName?lastname='S'

works in a browser.

VS 2008 SP1 .

A: 

You've probably tried this already, but what happens without the AddQueryOption? I know it won't pass the parameter, but does that change the issue with parentheses? Also, what happens if you do that and change the service to not require the parameter? Same question about parentheses.

Finally, if this turns out to be a bug, then please report it on Connect. Then post the URL here so we can vote on how important we feel the problem is. Be sure to do a search first to see if someone else has reported it.

John Saunders
+1  A: 

It turned out the problem was not related to parentheses , I was missing string literal single quotes

should be

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

but

GetCustomerByLastName()?lastname='S'

and

GetCustomerByLastName?lastname='S'

both correct for ADO.Net Data Services.

MicMit

related questions