Odata V4路由前缀和批处理同步

时间:2019-06-12 21:54:26

标签: odata batch-processing scheduler syncfusion

我正在使用Syncfusion的工具进行计划。调度程序正在与odata端点通信。 odata服务正在正确运行以进行获取,放置和删除。但是,计划程序使用$ batch来处理对计划的编辑。我无法使$ 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)中,这就是我所看到的:

响应标签

-batchresponse_e2f02110-21b6-4559-924e-1e2b3376fb3c 内容类型:多部分/混合; boundary = changesetresponse_4799e072-83d9-4b7d-9409-23eceb98736b

-changesetresponse_4799e072-83d9-4b7d-9409-23eceb98736b 内容类型:application / http 内容传输编码:二进制 内容ID:0

找不到HTTP / 1.1 404

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

HEADERS TAB

常规

请求网址:https://localhost:44341/odata/Events/ $ batch

请求方法:POST

状态码:200

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

推荐人政策:降级时不推荐人

响应标题

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

内容类型:多部分/混合;边界= batchresponse_e2f02110-21b6-4559-924e-1e2b3376fb3c

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

odata版本:4.0

服务器:Kestrel

状态:200

x技术支持:ASP.NET

x源文件:=?UTF-8?B?

请求标头

显示了临时标题

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

Content-Type:多部分/混合; charset = UTF-8; boundary = batch_80a929c5-2918-463e-ba41-aa8c981ffb3b

DNT:1

来源:https://localhost:44308

首选:return = representation

引荐来源: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 内容类型:多部分/混合; boundary = changeset_f9c22042-3196-4452-a1c6-2fd55993e2a2

-changeset_f9c22042-3196-4452-a1c6-2fd55993e2a2 内容类型:application / http Content-Transfer-Encoding:二进制

POST空HTTP / 1.1 接受:application / json,text / javascript, / ; q = 0.01 内容ID:0 内容类型: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”: 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 内容类型:application / http Content-Transfer-Encoding:二进制

PATCH https://localhost:44341/odata/Events(1) HTTP / 1.1 接受:application / json,text / javascript, / ; q = 0.01 内容ID:1 内容类型:application / json; charset = 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 Somewhere,Longwood,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-

2 个答案:

答案 0 :(得分:0)

发现了问题。

它在有效载荷中。

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

不能在需要POST的地方输入null值。检查了datamanger,我忘了配置insertUrl。

答案 1 :(得分:0)

融合问候。

我们很高兴您的问题得到解决。我们准备了带有ODataV4Adaptor的CRUD示例,供您参考。

示例:http://www.syncfusion.com/downloads/support/directtrac/239189/ze/Schedule811727521

服务:http://www.syncfusion.com/downloads/support/directtrac/239189/ze/service1083864530

此致

卡尔蒂