Kne*_*erd 1 c# response asp.net-web-api
当我尝试设置Content-MD5-Header时,我得到了这个异常
System.InvalidOperationException wurde nicht von Benutzercode behandelt.
HResult=-2146233079
Message=Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.
Source=System.Net.Http
StackTrace:
bei System.Net.Http.Headers.HttpHeaders.CheckHeaderName(String name)
bei System.Net.Http.Headers.HttpHeaders.Add(String name, String value)
bei caching_test.Controllers.ValuesController.Get(Int32 id) in C:\Users\ulbricht\Documents\Bitbucket\caching-system\caching test\Controllers\ValuesController.cs:Zeile 35.
bei lambda_method(Closure , Object , Object[] )
bei System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass13.<GetExecutor>b__c(Object instance, Object[] methodParameters)
bei System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
bei System.Web.Http.Controllers.ReflectedHttpActionDescriptor.<>c__DisplayClass5.<ExecuteAsync>b__4()
bei System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)
InnerException:
Run Code Online (Sandbox Code Playgroud)
这是有例外的部分
public HttpResponseMessage Get(int id)
{
var result = "value" + id;
var hash = Convert.ToBase64String(MD5.Create().ComputeHash(UTF8Encoding.UTF8.GetBytes(result)));
if (Request.Headers.FirstOrDefault(h => h.Key == "Content-MD5").Value != null)
{
var hashvalue = Request.Headers.FirstOrDefault(h => h.Key == "Content-MD5").Value.FirstOrDefault();
if (hashvalue == hash)
{
return Request.CreateResponse(HttpStatusCode.NotModified);
}
}
var response = Request.CreateResponse(HttpStatusCode.OK, result);
response.Headers.Add("Content-MD5", hash); // <------- Here comes the error
return response;
}
Run Code Online (Sandbox Code Playgroud)
这是源代码https://bitbucket.org/Knerd/caching-system我希望你能帮助我.
或者您甚至可以使用为此目的明确设计的header属性.不需要神奇的字符串.
response.Content.Headers.ContentMD5 = MD5.Create().ComputeHash(UTF8Encoding.UTF8.GetBytes(result));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2473 次 |
| 最近记录: |