C#NancyFx试图找到接受标头

时间:2014-09-05 07:46:25

标签: c# nancy request-headers

我有这个函数来确定发生错误时在页面上呈现的内容(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”

0 个答案:

没有答案