C# Web Api,编写响应头
我正在.NET6中编写一个web api,我正在从SQLServer获取数据并以json格式返回,我还想添加一些头作为响应。除了一个包含连字符的标题外,所有标题都可以正常工作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
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");