首页 > 解决方案 > 从 ASP.NET Core v2.2 WebAPI 应用程序发送响应标头

问题描述

我有一个 API 控制器,它接受文件上传并且返回类型为void. 我需要从 API 控制器向客户端(JavaScript - 成功处理程序)返回内容,比如说一个名称。我该怎么做?

我尝试在 API 控制器中使用响应标头。但没有成功。这是下面的代码部分。

public void MyAPIController(IList<IFormFile> Files)
{
    try
    {

       . . . . . . . . . . 
                    Response.Clear();
                    Response.ContentType = "application/json; charset=utf-8";
                    Response.StatusCode = 200;
                    Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = "File Uploaded";
                    Response.Headers.Add("ModifiedName", "myImage");
                }
            }
        }
    }
    catch (System.IO.IOException e)
    {
        Response.Clear();
        Response.StatusCode = 204;
        Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = "No Content";
        Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = e.Message;

    }
}
function SuccessHandler(args) {
    var modified = args.currentTarget.getResponseHeader('ModifiedName'); 
}

标签: javascriptasp.net-coreasp.net-core-webapiasp.net-core-2.2

解决方案


我有一个接受文件上传并且返回类型为 void 的 API 控制器。我需要从 API 控制器向客户端(JavaScript - 成功处理程序)返回内容,比如说一个名称。我该怎么做?

当用作方法的返回类型时,void指定该方法不返回值。

ASP.NET Core 为 Web API 控制器操作返回类型提供以下选项:

  • 具体类型

最简单的操作返回原始或复杂数据类型(例如,string或自定义对象类型)。

  • 动作结果

当一个操作中可能有多个ActionResult返回类型时, IActionResult返回类型是合适的。这些类型代表各种 HTTP 状态代码。属于此类别的一些常见返回类型是 BadRequestResult (400)、NotFoundResult (404) 和 OkObjectResult (200)。ActionResult

  • 动作结果<T>

ASP.NET Core 2.1为 Web API 控制器操作引入了ActionResult< T >返回类型。它使您能够返回派生自 ActionResult 的类型或返回特定类型。

参考 :

ASP.NET Core Web API 中的控制器操作返回类型

https://dejanstojanovic.net/aspnet/2018/december/choosing-the-proper-return-type-for-webapi-controller-actions/


推荐阅读