我正在使用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-
请求网址: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
首选: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-
答案 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
此致
卡尔蒂