如何在C#中的json结果中返回错误消息?

How to return a error message in json result in C#?

提问人: 提问时间:5/16/2022 更新时间:5/17/2022 访问量:342

问:

这是我的代码:

    [HttpPost]
    [Route("api/bulkUpload")]
    [IgnoreAntiforgeryToken]
    public JsonResult bulkUpload(IFormFile file)
    {
        List<Input> inputs = new List<Input>();
        try
        {
            var extension = Path.GetExtension(file.FileName);
            if (extension == ".csv")
            {
              .
              .
              .
            }
        }
        catch(exception ex)
        {
          return json(new { errormessage ="invalid file extension"});
        }
     return jsonresult(inputs)
    }

在 swagger api 中,如果我给出不同的文件(差异扩展名),如 .txt 或 .xls,它会给出错误代码:500。 但是我想返回一条错误消息作为无效的文件扩展名。请帮助此代码。

C# JSON API HTTP-POST JSONRESULT

评论

1赞 Prasad Telkikar 5/16/2022
你试过吗if(extension== ".txt" || extension == ".xls")return Json(new { errormessage ="invalid file extension"});
0赞 Drew Aguirre 5/19/2022
在尝试捕获之前,请执行 if(!extension.Equals(“.csv”)) 抛出新的异常(“无效的文件扩展名”) 验证请求并抛出无效文件。

答:

0赞 Dan Csharpster 5/16/2022 #1

这可能有点取决于您使用的 ASP.NET 版本,但您应该能够执行以下操作:

[Microsoft.AspNetCore.Mvc.Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{

    [Microsoft.AspNetCore.Mvc.HttpPost]
    [Microsoft.AspNetCore.Mvc.Route("api/bulkUpload")]
    [IgnoreAntiforgeryToken]
    public IActionResult bulkUpload(IFormFile file)
    {
        List<Input> inputs = new List<Input>();
        try
        {
            var extension = Path.GetExtension(file.FileName);
            if (extension == ".csv")
            {
                // do the thing!
            }
        }
        catch (Exception ex)
        {
            return BadRequest("invalid file extension");
            // or try this:
            // return BadRequest(new JsonResult("invalid file extension"));
        }

        return new JsonResult("ok");
    }

}

public class Input
{

}

这是关于它的文档和一些示例

评论

0赞 5/17/2022
我在request.createerrorresponse上收到错误,因为“httprequest”不包含createerrorresponse的定义。
0赞 Dan Csharpster 5/17/2022
您使用的是哪个版本的 ASP.NET?
0赞 5/17/2022
我使用的是 3.1 版本
0赞 Dan Csharpster 5/17/2022
您是否包含 System.Net.Http 命名空间?
0赞 5/17/2022
是的,我已经包含了system.net.http命名空间。