ASP.NET Ядро — вызов одного метода контроллера из другого

#c# #asp.net-core #controller

Вопрос:

Мне нужно вызвать из метода создания метод удаления для очистки. Я хочу позвонить DeleteDevice , как ленивая очистка, и мне все равно, получится это или нет.

Люди предложили использовать этот способ:

 DeleteDevice(param).ConfigureAwait(false);   

Это безопасно?

 public async Tasklt;ActionResultlt;Devicegt;gt; CreateDevice([FromBody] CreateDeviceRequest request) {  if (!ModelState.IsValid)  return BadRequest(ModelState);   try  {  var registeredDevice = await RegisterDevice(request.DisplayName);   bool isCreatePrinterSucceed = false;   try  {  var updatedDevice = await UpdateDevice(registeredDevice.Id);   isCreatePrinterSucceed = true;   return Ok(new DeviceReference  {  DisplayName = request.DisplayName,  Id = updatedDevice.Id  });  }  finally  {  if (!isCreatePrinterSucceed)  {  var param = new DeleteDeviceRequest()  {  Id = registeredDevice.Id,  AzureUserBearerToken = request.AzureUserBearerToken  };  DeleteDevice(param).ConfigureAwait(false); ;  }  }  }  catch (Exception ex)  {  return StatusCode((int)HttpStatusCode.InternalServerError, ex.Message);  } }  

Комментарии:

1. Не могли бы вы подробнее рассказать о том, чего вы здесь пытаетесь достичь и что вы подразумеваете под тем, безопасна ли операция?

2. Можете ли вы инкапсулировать этот метод удаления? Вызывайте его напрямую, когда вы им пользуетесь.

3. Если обновленное устройство выйдет из строя, я пытаюсь удалить незавершенное устройство . «безопасно» означает, что пользователь не увидит никаких побочных эффектов, даже если удаление не удастся и будут исключения.