ADO.Net Services service operation with parameters called from client library fails

こ雲淡風輕ζ 提交于 2020-01-13 06:42:08

问题


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 .


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/707881/ado-net-services-service-operation-with-parameters-called-from-client-library-fa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!