Odata V4路由前缀和批处理syncfusion

Odata V4 routing prefix and batch processing syncfusion

我正在使用 Syncfusion 的日程安排工具。调度程序正在与 odata 端点对话。 odata 服务 运行 正确获取、放置、删除。但是,调度程序使用 $batch 来处理对调度的编辑。我无法让 $batch 正确路由 and/or 进程。

默认情况下,调度程序会像这样进行编辑调用:

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());

        });

所以我在我的 headers 中获得了成功 (200) POST 但响应是 404。我对发生的事情感到非常困惑。控制器似乎没有处理批处理命令。特别是负载 body 中的 POST 和 PATCH 命令。预先感谢您的帮助。

在开发工具 (CHROME) 中,这是我看到的:

响应选项卡

--batchresponse_e2f02110-21b6-4559-924e-1e2b3376fb3c Content-Type: multipart/mixed;边界=changesetresponse_4799e072-83d9-4b7d-9409-23eceb98736b

--changesetresponse_4799e072-83d9-4b7d-9409-23eceb98736b Content-Type: application/http Content-Transfer-Encoding:二进制 Content-ID: 0

HTTP/1.1 404 未找到

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

HEADERS TAB

一般

请求URL:https://localhost:44341/odata/Events/$batch

请求方式:POST

状态码:200

远程地址:[::1]:44341

推荐人政策:no-referrer-when-downgrade

回应Header

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

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

日期:2019 年 6 月 12 日,星期三 21:35:08 GMT

odata-version: 4.0

服务器:红隼

状态:200

x-powered-by: ASP.NET

x-sourcefiles: =?UTF-8?B?QzpcVlMyMDE3IFByb2plY3RzXFRIUFRPZGF0YVxPZGF0YUxlYXJuaW5nXG9kYXRhXEV2ZW50c1wkYmF0Y2g=?=

请求Header

显示临时 headers

接受:application/json、text/javascript、/; q=0.01

Content-Type: multipart/mixed;字符集=UTF-8;边界=batch_80a929c5-2918-463e-ba41-aa8c981ffb3b

DNT: 1

来源:https://localhost:44308

更喜欢:return=代表

推荐人:https://localhost:44308/admin/home/scheduler

User-Agent:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/74。 0.3729.169Safari/537.36

请求负载

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

--changeset_f9c22042-3196-4452-a1c6-2fd55993e2a2 Content-Type: application/http Content-Transfer-Encoding: 二进制

POST 空 HTTP/1.1 接受:application/json、text/javascript、/; q=0.01 Content-Id: 0 Content-Type: application/json;字符集=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 某处,朗伍德, FL 32750","Description":"asdfadfada","IsAllDay":false,"IsRecurring":true,"RecurrenceID":1,"RecurrenceRule":"FREQ=WEEKLY;BYDAY=SA;INTERVAL=1;","RecurrenceException":null,"IsReadonly":false,"IsBlock":false,"IsActive":true,"IsDisabled":false,"VenueId":1, "Guid":"4a0d1282-678b-b4b8-e84a-0cbb011887d4"}

--changeset_f9c22042-3196-4452-a1c6-2fd55993e2a2 Content-Type: application/http Content-Transfer-Encoding: 二进制

补丁https://localhost:44341/odata/Events(1)HTTP/1.1 接受:application/json、text/javascript、/; q=0.01 Content-Id: 1 Content-Type: application/json;字符集=utf-8

{"Id":1,"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 某处,朗伍德, FL 32750","Description":"adgadgadfafdas","IsAllDay":false,"IsRecurring":true,"RecurrenceID":null,"RecurrenceRule":"FREQ=WEEKLY;BYDAY=SA;INTERVAL=1;","RecurrenceException":"20190609T020000Z","IsReadonly":false,"IsBlock":false,"IsActive":true,"IsDisabled":false,"VenueId": 1}

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

找到问题了。

它在负载中。

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。