【问题标题】:How to set response headers in .NET core 2.0 service如何在 .NET core 2.0 服务中设置响应标头
【发布时间】:2018-11-10 19:50:38
【问题描述】:

我有一个 dotnet core 2 服务,我想在发送响应之前添加一个响应标头,但我不知道该怎么做。标头的值将取决于请求,并非所有请求都相同。我要添加的示例端点如下。

[HttpPost("MyEndpoint")]
public string MyEndpoint([FromBody][Required] RequestBody requestBody)
{
    string responseBody = DoStuff(requestBody);

    // How to set response header?

    return responseBody;
}

附言对不起,愚蠢的用户名,我急于创建帐户,但现在我无法更改 30(25 天以上)天。

【问题讨论】:

  • 您需要返回HttpResponseMessage
  • +1 到 SLaks 评论。下面是一些关于如何返回带有修改的标头的 HttpResponseMessage 的示例代码:HttpResponseMessage
  • 与我在 Fouad 的回复中遇到的问题类似,Request 对象似乎也不存在于此范围内。我确实找到了解决方案并在下面添加了它。如果您知道使RequestResponse 可访问对象缺少什么,我很想知道。链接的示例没有解释这一点。

标签: c# http-headers .net-core


【解决方案1】:

试试这个:

[HttpPost("MyEndpoint")]
public string MyEndpoint([FromBody][Required] RequestBody requestBody)
{
    string responseBody = DoStuff(requestBody);

    // How to set response header?
    this.Response.Headers.Add("MyHeader", "MyHeaderValue");

    return responseBody;
}

【讨论】:

  • 很遗憾this.Response 不存在。我确实找到了一个可行的解决方案,我将在下面添加。
【解决方案2】:

很遗憾,因为this.Response 似乎不存在,所以我无法让上一个回复的解决方案起作用,但我确实找到了一个有效的解决方案。

首先,在Startup.ConfigureServices(...) 中添加以下内容:

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

接下来,向服务控制器添加一个HttpContext成员,并将HttpContextAccessor注入服务控制器构造函数,如下所示:

private readonly HttpContext Context;

public MyServiceController(IHttpContextAccessor contextAccessor, ...)
{
    Context = contextAccessor.HttpContext;
}

最后,使用新的Context 成员来修改标题。原帖中方法的修改版:

[HttpPost("MyEndpoint")]
public string MyEndpoint([FromBody][Required] RequestBody requestBody)
{
    string responseBody = DoStuff(requestBody);

    // Set response header
    Context.Response.Header.Add("HeaderKey", "HeaderValue");

    return responseBody;
}

【讨论】:

    【解决方案3】:

    在 .net 核心中这很简单:

    Response.Headers.Add("testkey", "testvalue");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-04
      • 2021-10-27
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 2014-11-09
      相关资源
      最近更新 更多