当前位置: 首页 > 面试题库 >

.NET CORE 3升级CORS和Json(cycle)XMLHttpRequest错误

狄承望
2023-03-14
问题内容

我的工作项目用asp.net core 2.1编写了很长时间,但是昨天,我被迫将其升级到.net core
3.0(由于2.1无法调用已经用3.0编写的Dll)。

因此,许多功能已过时或已被删除。我几乎解决了所有问题,但CORS出现了一个问题。

像我之前的许多人一样,我曾经:

app.UseCors(x => x
  .AllowAnyOrigin()
  .AllowAnyMethod()
  .AllowAnyHeader()
  .AllowCredentials());

Configure功能上。并services.AddCors()ConfigureServices功能上。

我能与设置固定这很容易WithOrigins().SetIsOriginAllowed(_ => true)代替AllowAnyOrigin()不与工作了AllowCredentials()

在那之后,我能够启动该应用程序,我认为一切都很好,但是直到现在为止,我一直陷在一个我不知道如何解决的问题上。

我有数据库关系N:N和关系表来处理该问题,这意味着我具有Admin具有AdminProject list属性的实体,然后又具有AdminProject具有Admin listProject list属性的Project实体以及具有AdminProject list属性的实体。

当我列出某些管理员的项目时,我将在Controller this中返回return Ok(projects),我只getAllAdminProject实体上使用,然后Select仅返回项目。

为此,我必须[JsonIgnore]在project / admin中使用创建json时不需要避免循环的属性。

这样说: 现在,.NET CORE 3.0和CORS设置不起作用了

我收到一个错误: System.Text.Json.JsonException: A possible object cycle was detected which is not supported. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 32.

在控制台中调试时以及Access to XMLHttpRequest at 'http://localhost:5000/api/project/adminlist/1' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control- Allow-Origin' header is present on the requested resource.在WEB浏览器中出错时

我想我几乎在使用Cors设置等进行了所有尝试,但现在不知道为什么会这样。我还尝试了JsonConvert.SerializeObject(),然后将其返回—>
return Ok(JsonConvert.SerializeObject(projects)),这是可行的,但是我无法(在心理上)在每个控制器功能中都做到这一点。

请帮忙!非常感谢!


问题答案:

之所以出现此问题,是因为它们在.NET Core 3中几乎没有改变JSON策略。不再支持Json.Net,如果要使用所有Json选项,则必须下载此Nuget
Microsoft.AspNetCore.Mvc.NewtonsoftJson

之后,在Startup.cs文件更改/修复/添加行中添加MVC的位置(在ConfigureServices方法中)。

所以:这是我所做的事情,也是解决问题的原因:

services.AddMvc(option => option.EnableEndpointRouting = false)
                .SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
                .AddNewtonsoftJson(opt => opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore);

我希望它会帮助其他人。干杯!



 类似资料:
  • 在这个优秀团队的帮助下,我能够安装Rails。下一步是升级Rails。我按照文档中的建议尝试了两种方法,但都出现了错误。。。 C:\网站 C:\网站 我回顾了评论中给出的链接,但我真的不明白...抱歉。我希望有一个直接的解决办法。谢啦 我查看了GoRails站点,它需要一个Linux子系统,这似乎比我需要的要多,在线课程的讲师没有提到。我已经为运行Rails安装了所有东西,但最后一步是将Rails

  • 我相信我已经为4.1准备好了所有的依赖项,但是当我使用作曲家更新时,我会出现以下错误: 生成自动加载文件 脚本php artisan clear已编译,处理返回的更新后cmd事件时出错: 脚本php artisan optimize处理返回的更新后cmd事件时出错: 我的composer文件如下所示: { }

  • 鉴于XHR 已经得到广泛接受,成为了事实标准,W3C 也着手制定相应的标准以规范其行为。 XMLHttpRequest 1 级只是把已有的XHR 对象的实现细节描述了出来。而XMLHttpRequest 2 级则进一步发展了XHR。并非所有浏览器都完整地实现了XMLHttpRequest 2 级规范,但所有浏览器都实现了它规定的部分内容。 21.2.1 FormData 现代Web 应用中频繁使用

  • 当我试图使用官方指南将我们现有的项目从Laravel5.1更新到Laravel5.2时,我在composer更新后得到了一个错误 php artisan clear已编译 他跑了。这里是错误。 类\Foundation\Composer不存在 有人有类似的问题吗?当我用无脚本标志运行作曲家更新时,它会定期更新,所以这是一个清晰编译的问题。 下面是我的服务提供商和作曲家。json文件。 服务提供者

  • 问题内容: 对于一个项目,我正在研究各种HTML5和Javascript元素以及它们周围的安全性,而我现在正努力使自己了解CORS。 根据我的测试,如果我删除.. ..从试图访问的页面,我在Chrome的控制台日志中看到以下内容: 我知道这是正确的,但是Wireshark在返回中显示HTTP / 1.1 200 OK,并且在数据中显示了所请求页面的源。因此,即使实际上已传输响应的浏览器和Javas

  • 问题内容: 我在将XHR responseType设置为“ json”时遇到麻烦。如果我将其保留为空字符串,则工作正常,但是当我将其设置为“ json”时,会收到控制台错误消息SYNTAX_ERR:DOM异常12。 .js文件: .php文件: 不知道发生了什么。 问题答案: 对象的属性已添加到其新的变体XMLHttpRequest Level 2中 ,并且包含在中,我不确定所有浏览器都支持此方法