сгенерированный кодом V4 odata client Невозможно изменить запрос строки параметров - PullRequest
0 голосов
/ 12 октября 2018

Позвольте мне предварить это, сказав, что я новичок в OData и не могу найти никого, кто делает то, что я собираюсь объяснить.Нам нужно портировать приложение с уровня 2 на 3, а другие наши устаревшие приложения используют для этой цели .NET Remoting ... (что в конечном итоге также потребует этого обновления.) Что ж, мы собирались использовать WCF, но Microsoft, похоже,упала поддержка OData там ... так что мы здесь.OData V4 с Web Api 2.2.Короче говоря, у меня возникают проблемы при формировании правильного маршрута на стороне клиента.

В Fiddler я могу получить доступ к службе OData с помощью Uri:

http://localhost:port/odata/Templates?templateName='MyTemplate'&$expand=Items

И это действительно возвращает мой выбранный объект шаблона так, как я ожидаю.

Используя клиент, сгенерированный кодом, который Microsoft создала для этой версии службы OData, я не могу заставитьпрокси сервис для генерации вышеуказанного Uri.Отладка, я нахожу лучшее, что я могу сформировать в своем Uri:

http://localhost:port/odata/Templates('MyTemplate')?$expand=Items

, но это возвращается как 404, не найденное, если вы выполняете запрос таким способом.

Мой код C # для создания вышеуказанного искаженного маршрута выглядит следующим образом:

string serviceUri = "http://localhost:port/odata/";
var container = new Default.Container( new Uri( serviceUri ) );
var dictLookup = new Dictionary<string, object>() {{"TemplateName", "MyTemplate"}};
var result = container.Templates.ByKey( dictLookup ).Expand("Items");

Я нашел и попытался использовать метод .AppendRequestUri ("templateName = 'MyTemplate') из DataServiceContext (container,), но это не влияет на RequestUri службы, независимо от того, что я помещаю в ее параметр.

Вопрос в том, как получить контейнер, сгенерированный кодом, в клиентском приложении (DataServiceContext), чтобы сформировать Uri следующим образом:

http://localhost:port/odata/Templates?templateName='MyTemplate'&$expand=Items

Любой ответ на это будет принята с благодарностью.

Кент

...