gpt4 book ai didi

c# - 接受列表参数的 odata 操作始终为 null

转载 作者:行者123 更新时间:2023-11-30 19:25:08 27 4
gpt4 key购买 nike

我的 odata Controller 有问题。

我想发送一个地址对象列表,但接收到的参数总是空的。

我的终点是这样的:

    [EnableQuery]
public IHttpActionResult SetCoordinatesOnAddressList(IEnumerable<Address> addresses)
{
var result = addresses.Select(address => _coordinates.GetAddressCoordinates(address)).ToList();
return Ok(result);
}

我在 WebApiConfig 中设置了这个

builder.EntityType<Address>().Collection
.Action("SetCoordinatesOnAddressList")
.ReturnsFromEntitySet<Address>("Addresses");

我正在使用 Postman 发送请求。

我的请求作为后请求发送,如下所示:

[{"StreetName":"Some street","StreetNumber":"8","ZipCode":1234,"Town":"Some town"}]

我有一个不同的端点,它采用单个地址而不是 IEnumerable,并且使用相同的 json 请求(没有 []),因此 json 中的字段是正确的。

总结一下:我的 IEnumerable 端点总是收到 null。知道是什么原因造成的吗?

谢谢。

编辑:

我尝试更改我的端点以接受 AddressDTO,如下所示:

public IHttpActionResult SetCoordinatesOnAddressList(AddressDTO addresses)
{
return Ok(2);
}

这是一个 AddressDTO:

public class AddressDTO
{
public IEnumerable<Address> Addresses { get; set; }
}

如果我尝试发布这个:

{"Addresses": [{"StreetName":"Some street","StreetNumber":"8","ZipCode":1234,"Town":"Some town"}]}

我收到这个错误:

{
"error": {
"code": "",
"message": "The request entity's media type 'application/json' is not supported for this resource.",
"innererror": {
"message": "No MediaTypeFormatter is available to read an object of type 'AddressDTO' from content with media type 'application/json'.",
"type": "System.Net.Http.UnsupportedMediaTypeException",
"stacktrace": " at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\\\r\\\n at System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\\\r\\\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"
}
}
}

最佳答案

如果像这样将集合作为对象上名为地址的属性发送,会发生什么情况?

{"addresses": [{"StreetName":"Some street","StreetNumber":"8","ZipCode":1234,"Town":"Some town"}]}

关于c# - 接受列表参数的 odata 操作始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com