【问题标题】:ASP.NET Core: Set charset different from UTF-8 in Json ResponseASP.NET Core:在 Json 响应中设置不同于 UTF-8 的字符集
【发布时间】:2019-03-26 16:37:42
【问题描述】:

我在 ASP.NET Core 项目的控制器中有这个获取请求

    [HttpGet]
    [Route("api/controller/getlastresult/{id}")]
    public IActionResult GetLatestResultForController(string id)
    {
        Response.ContentType = "application/json";

        var list = _dbAccessLayer.GetAllVoteResults();
        var appropriateResults = list.Where(item => item.DeviceId.Equals(id) && item.Status == "Finished")
            .OrderBy(item => item.TimeStarted);

        if (appropriateResults.Any())
            return Ok(Json(appropriateResults.Last().Result));

        return BadRequest();
    }

它工作正常,但在标题中有 Content-Type: application/json; charset=utf-8 你可以在这里看到:

我只需要常规的应用程序/json,没有字符集 utf-8,所以我猜它会是 ASCII 字符集。原因是我将此请求与不喜欢 utf-8 编码的微控制器一起使用。

如何在我的 Get 请求的响应中设置追逐?谢谢

【问题讨论】:

    标签: asp.net asp.net-core utf-8 get ascii


    【解决方案1】:

    要删除字符集,您可以尝试像

    这样的中间件
    app.Use(async (context, next) =>
    {
        context.Response.OnStarting((state) =>
        {
            if (context.Response.Headers.Count > 0 && context.Response.Headers.ContainsKey("Content-Type"))
            {
                var contentType = context.Response.Headers["Content-Type"].ToString();
                if (contentType.StartsWith("application/json"))
                {
                    context.Response.Headers.Remove("Content-Type");
                    context.Response.Headers.Append("Content-Type", "application/json");
                }
            }
    
            return Task.FromResult(0);
        }, null);
        await next.Invoke();
    });
    

    【讨论】:

    • 这不起作用。我尝试调试它,当我通过邮递员触发请求时,此代码不执行,仅当我在我的网站上的页面之间跳转时
    • @SaintMSent 与我们分享您的治疗师Startup.cs
    猜你喜欢
    • 2014-08-16
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多