Префикс маршрутизации Odata V4 и пакетная обработка syncfusion - PullRequest
0 голосов
/ 13 июня 2019

Я использую инструменты Syncfusion для планирования.Планировщик общается с конечной точкой оддаты.Сервисы odata работают правильно для get, put, delete.Однако планировщик использует пакетную обработку $ для обработки изменений в расписании.Я не могу заставить $ batch правильно маршрутизировать и / или обрабатывать.

По умолчанию планировщик выполняет вызов редактирования так:

https://localhost:44341/odata/Events/$batch

Вот мои карты маршрутов:

app.UseMvc(builder =>
        {
            builder.Select().Expand().Filter().OrderBy().MaxTop(100).Count();
            builder.MapODataServiceRoute("odata", "odata", GetEdmModel());
            builder.MapODataServiceRoute("odataBatch", "odata/{controller}", GetEdmModel(), new DefaultODataBatchHandler());

        });

Итак, я получаю (200) POST в своих заголовках, но получаю 404. Я очень смущен тем, что происходит.Кажется, что контроллер не обрабатывает пакетные команды.В частности, команды POST и PATCH в теле полезной нагрузки.Заранее благодарю за помощь.

В инструментах разработчика (CHROME) вот что я вижу:

RESPONSE TAB

- batchresponse_e2f02110-21b6-4559-924e-1e2b3376fb3c Тип содержимого: составной / смешанный;border = changesetresponse_4799e072-83d9-4b7d-9409-23eceb98736b

- changesetresponse_4799e072-83d9-4b7d-9409-23eceb98736b Тип содержимого: application / http Content-Transfer-Encoding: двоичный идентификатор содержимого: 0

HTTP / 1.1 404 Не найдено

- changesetresponse_4799e072-83d9-4b7d-9409-23eceb98736b-- --batchresponse_e2f02110-21b6-4559-924e-1e2b3376fb3c -

HEADERS1023 * Общие

URL-адрес запроса: https://localhost:44341/odata/Events/$batch

Метод запроса: POST

Код состояния: 200

Удаленный адрес: [::1]: 44341

Политика реферера: no-referer-when-downgrade

Заголовок ответа

access-control-allow-origin: https://localhost:44308

content-type: multipart / mixed; border = batchresponse_e2f02110-21b6-4559-924e-1e2b3376fb3c

дата: ср, 12 июня 2019 21:35:08 GMT

версия данных: 4.0

сервер: Kestrel

статус: 200

x-powered-by: ASP.NET

x-sourcefiles: =? UTF-8? B? QzpcVlMyMDE3? IFByb2plY3RzXFRIUFRPZGF0YVxPZGF0YUxlYXJuaW5nXG9kYXRhXEV2ZW50c1wkYmF0Y2g =

1056 * Request Header 1058 * Предварительные заголовки показаны 1060 * Accept: приложения / JSON, текст / JavaScript, / ;q = 0,01

Тип содержимого: составной / смешанный;charset = UTF-8; border = batch_80a929c5-2918-463e-ba41-aa8c981ffb3b

DNT: 1

Происхождение: https://localhost:44308

Предпочтение: возврат = представление

Referer: https://localhost:44308/admin/home/scheduler

Пользователь-агент: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 74.0.3729.169 Safari / 537.36

Запрос полезной нагрузки

- batch_80a929c5-2918-463e-ba41-aa8c981ffb3b Content-Type: multipart / mixed;border = changeset_f9c22042-3196-4452-a1c6-2fd55993e2a2

- changeset_f9c22042-3196-4452-a1c6-2fd55993e2a2 Тип содержимого: application / http Content-Transfer-Encoding: binary

POSTHTTP / 1.1 Accept: application / json, text / javascript, / ;q = 0.01 Content-Id: 0 Content-Type: application / json;charset = utf-8

{"Id": 2, "Subject": "Joe's Pizza Shack", "StartTime": "2019-06-09T02: 00: 00.000Z", "EndTime": "2019-06-09T07: 30: 00.000Z "," StartTimezone ":" America / New_York "," EndTimezone ":" America / New_York "," Location ":" 123 Somewhere, Longwood, FL 32750 "," Description ":"asdfadfada", "IsAllDay" ложь "IsRecurring": правда, "RecurrenceID": 1, "RecurrenceRule": "FREQ = ЕЖЕНЕДЕЛЬНИК; BYDAY = SA, Interval = 1;", "RecurrenceException": нулевой, "IsReadOnly": false, "IsBlock": false, "IsActive": true, "IsDisabled": false, "VenueId": 1, "Guid": "4a0d1282-678b-b4b8-e84a-0cbb011887d4"}

--changeset_f9c22042-3196-4452-a1c6-2fd55993e2a2 Тип содержимого: application / http Content-Transfer-Encoding: двоичный

PATCH https://localhost:44341/odata/Events(1) HTTP / 1.1 Принимать: application / json, text / javascript, / ;q = 0,01 Content-Id: 1 Content-Type: application / json;charset = utf-8

{"Id": 1, "Subject": "Пицца" Джо "," StartTime ":" 2019-06-09T02: 00: 00.000Z "," EndTime ":" 2019-06-09T07: 30:00.000Z "," StartTimezone ":" America / New_York "," EndTimezone ":" America / New_York "," Location ":" 123 Somewhere, Longwood, FL 32750 "," Description ":" adgadgadfafdas "," IsAllDay ":ложь, "IsRecurring": правда, "RecurrenceID": нулевой, "RecurrenceRule": "FREQ = ЕЖЕНЕДЕЛЬНИК; BYDAY = SA, Interval = 1;", "RecurrenceException": "20190609T020000Z", "IsReadOnly" ложь "IsBlock": false, "IsActive": true, "IsDisabled": false, "VenueId": 1}

- changeset_f9c22042-3196-4452-a1c6-2fd55993e2a2-- --batch_80a929c5-2918-463e-ba41-aa8c981ffb3b -

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Привет Syncfusion.

Мы рады, что ваша проблема решена.Мы подготовили для вас образец CRUD с ODataV4Adaptor.

Образец: http://www.syncfusion.com/downloads/support/directtrac/239189/ze/Schedule811727521

Сервис: http://www.syncfusion.com/downloads/support/directtrac/239189/ze/service1083864530

С уважением,

Карти

0 голосов
/ 13 июня 2019

обнаружил проблему.

Это было в полезной нагрузке.

POST null HTTP/1.1 Accept: application/json, text/javascript, /; q=0.01 Content-Id: 0 Content-Type: application/json; charset=utf-8

не может иметь нулевое значение, где вам нужно POST. Проверил менеджер данных, и я забыл настроить insertUrl.

...