2010-05-31 3 views
4

я создал конечную точку OData (используя рамки сущности, службы данных WCF)OData и пользовательских WCF методы WebGet

и добавил пользовательский тестовый метод испытания WebGet как так:

[WebGet(UriTemplate = "{text}")] 
    public IQueryable<string> SplitString(string text) 
    { 
     if (text == null) throw new DataServiceException("text not specified"); 
     var result = (from s in text.Split('-') orderby s select s); 
     return result.AsQueryable(); 
    } 

и конфигурации line:

config.SetServiceOperationAccessRule("SplitString", ServiceOperationRights.All); 

Однако, независимо от того, как я указываю URL-адрес, я не могу получить текстовый параметр для заполнения. (он всегда равен нулю).

так:
http://localhost/myservice.svc/SplitString/testtext

не работает (Он бросает мой Exception, так как парам равно нулю). Каков правильный формат URL (или UriTemplate), который нужно использовать, чтобы заставить параметр работать?

Единственные примеры, которые я нашел в odata и WebGet, имеют только примерный метод, который не имеет параметров.

ответ

7

Правильный путь: /myservice.svc/SplitString?testtext='mystringvalue»

Смотрите эту страницу для более подробной информации: http://msdn.microsoft.com/en-us/library/cc668788.aspx

+0

Нет ли способ заставить это работать с DataService ? – eth0

+0

Что вы имеете в виду, не делая эту работу с DataService ? Не могли бы вы охарактеризовать ваш вопрос более подробно (и желательно как отдельный вопрос)? –