从ASP.NET Core v2.2 WebAPI应用程序发送响应头

时间:2019-08-02 11:44:24

标签: javascript asp.net-core-webapi asp.net-core-2.2 asp.net-core-webapi-2.1

我有一个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'); 
}

任何解决方案或指导都值得赞赏。

1 个答案:

答案 0 :(得分:0)

  

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

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

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

  • 特定类型

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

  • IActionResult

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

  • ActionResult

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

参考:

Controller action return types in ASP.NET Core Web API

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