J'essaie de retourner une image et dans certains cas des codes d'erreur. Au début, j'ai essayé de revenir à la tâche ne peut pas convertir implicitement de type 'microsoft.aspnetcore.mvc.badrequestobjectsult' vers 'Microsoft.aspnetcore.mvc.fileconTresult' P>
blockquote> Pour résoudre ce problème, je retourne un
retour badrequest () code>, je reçois une erreur de compilateur
actionResult code> à la place. Et il fonctionne. Mais cela accepte quelque chose. Je veux être clair sur ce que je veux revenir. Existe-t-il un moyen d'utiliser le
actionResResResResults fortement dactylographié
fichier code> (pour 200 succès) et
BADREQUEST code >,
NOTFound code> etc. fonctionnera? P>
[HttpGet("path")]
[Produces("image/jpeg", "image/webp", "text/plain")]
public async Task<ActionResult<FileContentResult>> Get(/*parameters*/)
{
if(/*invalid parameters*/)
{
return BadRequest("invalid parameters");
}
Byte[] image = GetImage();
return File(image, "image/jpeg");
}
3 Réponses :
Vous devez utiliser un iagresResult code>
Merci mais ma question est de revenir fortement typé actionResult
filecontentresult code> avec
actionResult
iacctionResult code> fonctionne mais cela n'indique pas le type de retour.
OK, si vous voulez être clair sur ce que vous voulez revenir, ajoutez [ProducesResponsonType (StatusCodes.Status400BADREQUEST)]
La réponse est non. Le type générique param param work for Si vous retournez un fichier et que vous devez pouvoir retourner d'autres résultats de code d'état, tout ce que vous pouvez utiliser est Le actionResult
ObjectResult code>, et par conséquent, peut traiter d'autres types de résultats tels que
BadRequestObjectsult code>, etc.. Toutefois,
filecontentresult code> n'hérite pas de
ObjectResult code> et n'est pas un type sérialisable. Par conséquent, il n'est pas éligible d'être utilisé ici. P>
iacctionResult code>, qui permettra évidemment tout type de résultat possible. P >
ProducesResponSeType code> peut être utilisé à des fins de la documentation, mais il n'aura aucune incidence sur le type de retour réel de quelque manière que ce soit. P>
Je lancerais une idée httpRequestException et définiriez le code de réponse HTTP qui a le plus de sens pour vous.
Si j'étais un autre développeur en regardant votre code, cela serait logique pour moi de voir le filecontentreSult comme type concret et ensuite Voir également le HTTPequestException lancé pour les paramètres non valides. P>
[HttpGet("path")] [Produces("image/jpeg", "image/webp", "text/plain")] public async Task<ActionResult<FileContentResult>> Get(/*parameters*/) { if(/*invalid parameters*/) { throw new HttpResponseException(/* invalid parameters message */, HttpStatusCode.BadRequest) } Byte[] image = GetImage(); return File(image, "image/jpeg"); }
Vous savez, des exceptions sont une chose.
@THeperplexedone J'essaie de retourner des codes d'erreur appropriés et de conserver avec les conventions de net ASP.
Essayez de retourner une iactionResult
Les exceptions peuvent être attrapées par middleware pour renvoyer des réponses JSON appropriées.