C# Web Api,编写响应头

C# Web Api,编写响应头,c#,asp.net-web-api,C#,Asp.net Web Api,我正在.NET6中编写一个web api,我正在从SQLServer获取数据并以json格式返回,我还想添加一些头作为响应。除了一个包含连字符的标题外,所有标题都可以正常工作 var data = [data from database] var response = Request.CreateResponse(HttpStatusCode.OK, data); response.Headers.Add("transactionid", "working fine"); response.He

我正在.NET6中编写一个web api,我正在从SQLServer获取数据并以json格式返回,我还想添加一些头作为响应。除了一个包含连字符的标题外,所有标题都可以正常工作

var data = [data from database]
var response = Request.CreateResponse(HttpStatusCode.OK, data);
response.Headers.Add("transactionid", "working fine");
response.Headers.Add("requesttimestamp", "working fine);
response.Headers.Add("**last-modified**", "does not work");
我得到了这个错误

误用的标题名。确保请求头与HttpRequestMessage一起使用,响应头与HttpResponseMessage一起使用,内容头与HttpContent对象一起使用

但同样的错误

我正在编写一个客户端,并试图在请求头中添加类似的参数,但得到了一个不同的错误

值“15/10/2018 04:30:15 AM”的格式正确

如果我删除连字符,效果很好

更新:我通过更改此代码修复了它

response.Content.Headers.TryAddWithoutValidation("last-modified", lastModified);


client.DefaultRequestHeaders.tryadd未经验证(“如果自”“2018年10月15日04:30:15 AM”“起修改”)

尝试将其添加到响应内容的标题中

response.Content.Headers.TryAddWithoutValidation("X-LAST-MODIFIED", "15/10/2018 04:30:15 AM");
请注意,使用
TryAddWithoutValidation
可避免对标题进行验证,我认为这是导致问题的原因

对于请求也可以这样做

var client = new HttpClient();
client.DefaultRequestHeaders.TryAddWithoutValidation("X-LAST-MODIFIED", "15/10/2018 04:30:15 AM");

你能试试HttpContext.Response吗?是的,它是这样工作的,但是添加了last modified作为“last modified”,我能把它全部改成小写吗?但我更喜欢Request.CreateResponse方法,如果可能的话
上次修改的
是内容头而不是响应头。尝试使用
response.Content.Headers.LastModified
设置其值…如果上次修改已经是response ok标头的一部分,那么我想添加另一个具有我自己值的上次修改。只需更改标头的名称以明确说明。
response.Content.Headers.TryAddWithoutValidation("X-LAST-MODIFIED", "15/10/2018 04:30:15 AM");
var client = new HttpClient();
client.DefaultRequestHeaders.TryAddWithoutValidation("X-LAST-MODIFIED", "15/10/2018 04:30:15 AM");