我最近将一个应用程序从使用.NET Framework转换为使用.NET Core,在此过程中,由于在返回某些字符时转义了它们,我的一些端点已经停止产生预期的结果。
我的控制器大致看起来像这样:
class MyController
{
[HttpGet]
[Authenticated]
public async Task<ActionResult> GetMyObject(string id)
{
var myObj = // Controller specific code to look up the object
return new JsonResult(myObj);
}
}
这是以前返回这样的结果:
{"HtmlTemplate":"
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href='https://fonts.googleapis.com/css?family=Nunito+Sans' rel='stylesheet' />
<style>
而现在看起来
{"htmlTemplate":"
\u003C!DOCTYPE html\u003E
\u003Chtml lang=\u0022en\u0022 xmlns=\u0022http://www.w3.org/1999/xhtml\u0022\u003E
\u003Chead\u003E
\u003Clink href='https://fonts.googleapis.com/css?family=Nunito\u002BSans' rel='stylesheet' /\u003E
\u003Cstyle\u003E
我对修改端点的调用者的控制较少,所以我想在这个应用程序中解决这个问题。我熟悉如何更改序列化程序(如here)的格式,但我不知道如何设置这里的参数,因为它是隐式的。
1条答案
按热度按时间von4xj4u1#
您需要配置
JsonOptions
:请注意,有2个
JsonOptions
,一个来自Microsoft.AspNetCore.Mvc
命名空间,一个来自Microsoft.AspNetCore.Http.Json
命名空间,对于控制器,您需要前者。另一种方法可以是使用所需的设置“手动”序列化并返回
ContentResult
(如果需要,以每个端点为基础处理此操作)。