2017-06-22 14 views
0

我正試圖將多個允許標題添加到aspnetcore v1.1.2中的HttpResponse。當我運行下面的代碼時,頭文件被添加到HttpResponse上的IHeaderDictionary中,但是隻有序列化時,集合中最後一個頭文件(本例中爲「POST」)實際上被添加到http響應中。有沒有其他人經歷過,或者我做錯了什麼?添加多個允許標題僅添加http響應中的最後一個標頭

這是我使用的代碼。

public override async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next) 
{ 
     context.HttpContext.Response.Headers.Add("Allow", new StringValues(new [] {"GET", "POST"})); 

     await next(); 
} 

我在ResultFilterAttribute中這樣做。

非常感謝......

回答

0

這應該可以解決這個問題:

context.HttpContext.Response.Headers.Add("Allow", "GET, POST"); 
+0

感謝,這是我一直在做的解決方法,但事實上,Add方法有一個重載需要一個StringValues對象,我希望這也可以。 – user644698

0

你的代碼是正確的,只是你可能需要改變你對此分析邏輯的地方。仔細檢查你的反應 - 它含有2 Allow頭,沒有一個頭有兩個值:

Allow: GET 
Allow: POST 

簡單的例子: 假設你有一個控制器行動:使用

[Route("api/[controller]")] 
public class ValuesController : Controller 
{ 
    // GET api/values 
    [HttpGet] 
    [AddHeader] 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 
} 

Get請求curl

curl -X GET http://localhost:5000/api/values -i 

Re回覆:

HTTP/1.1 200 OK 
Date: Fri, 23 Jun 2017 22:23:24 GMT 
Content-Type: application/json; charset=utf-8 
Server: Kestrel 
Transfer-Encoding: chunked 
Allow: GET 
Allow: POST 

["value1","value2"] 
+0

感謝您的回覆。在通過小提琴測試時,我只能得到一個允許標題。 – user644698

相關問題