У меня есть функция лазури, которая выглядит примерно так:
[FunctionName("AddMaterial")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]AddMaterialCommand command,
ILogger log, [Inject(typeof(IMediator))]IMediator mediator)
{
log.LogInformation("AddMaterial Function is processing a request");
var events = await mediator.Send(command);
if (events != null)
{
await mediator.Publish(events);
return (ActionResult)new OkObjectResult(events);
}
return new BadRequestObjectResult(new { message = "Please check that WarehouseId, RollPoNumber, RollNumber, Location and RollWeight are included in request" });
}
Эта функция использует пользовательский объект AddMaterialCommand в качестве запроса для документов .
Класс пользовательских объектов выглядит примерно так:
{
[DataContract]
public class AddMaterialCommand : IRequest<EventList>
{
[DataMember]
public Guid WarehouseId { get; set; }
[DataMember]
public int RollPoNumber { get; set; }
[DataMember]
public DateTime? DateRecieved { get; set; }
public AddMaterialCommand(Guid warehouseId, int rollPoNumber, DateTime dateRecieved)
{
WarehouseId = warehouseId;
RollPoNumber = rollPoNumber;
Location = location;
DateRecieved = dateRecieved;
}
}
При публикации в функцию выдает эту ошибку:
Выполнено AddMaterial (Ошибка,
Id = d7322061-c972-4e93-83cd-4d0313d26e86) [12.09.2008 20:59:46]
System.Private.CoreLib: Исключение при выполнении функции:
AddMaterial. Microsoft.Azure.WebJobs.Host: параметр привязки исключения
«Команда». System.Private.CoreLib: нет конструктора без параметров
определенный для этого объекта .
Когда я добавляю конструктор без параметров (зачем мне это нужно?), Он завершается с ошибкой:
Выполнено AddMaterial (Ошибка,
Id = 973cd363-19d6-49a3-a2eb-759f30c284bb) [12.09.2008 21:01:27]
System.Private.CoreLib: Исключение при выполнении функции:
AddMaterial. Microsoft.Azure.WebJobs.Host: параметр привязки исключения
«Команда». System.Private.CoreLib: неверное приведение из 'System.String'
«System.Guid ».
Что здесь происходит?
Мое лучшее предположение заключается в том, что тело запроса не читается и пустое значение вызывает недопустимое исключение приведения. Я до сих пор не знаю, зачем мне нужен конструктор без параметров. У меня не было этой проблемы до перехода к функциям Azure, когда я использовал привязку [FromBody]
, но я не думаю, что смогу использовать эту привязку с функциями Azure.