我有这个函数来确定发生错误时在页面上呈现的内容(404/500):
private enum RenderType
{
HTML,
Json,
Text
}
private RenderType GetRenderType(NancyContext context)
{
var enumerable = context.Request.Headers.Accept;
var ranges = enumerable.OrderByDescending(o => o.Item2).Select(o => new MediaRange(o.Item1)).ToList();
foreach (var item in ranges)
{
if (item.Matches("text/html"))
{
return RenderType.HTML;
}
else if (item.Matches("application/json") || item.Matches("text/json"))
{
return RenderType.Json;
}
}
return RenderType.Text;
}
问题是它返回第一个RenderType以通过if语句,如果它是一个未知的accept标头。我改变了代码,它默认为第一个if语句而不是RenderType.Text。
我整夜都试图想出这个。任何人都知道可以做什么?
在我看来,我知道发送的是什么,这是来自chrome调试器:
Sent:
Accept:image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Recieved:
Status Code:404 Not Found
Content-Type:text/html
Transfer-Encoding:chunked
正如您所看到的那样,它返回html而不是文本,Content-Type标题应为“text / plain”