我见过多个帖子推荐您的文章,并将请求用于指定标题内容类型的应用程序/json、添加或删除字符集或指定内容编码,但这并没有解决问题。
过去6-7年来,该网站一直运行良好,在.Net框架4.5.0中使用了jquery和knockoutjs。
$.ajax({
url: '/api/calendrierUsager/preferences',
type: 'PUT',
data: JSON.stringify(calendrier.configuration.viewModel.preferences()),
contentType: "application/json; charset=utf-8",
success: function(result) { ... }奇怪的是,同一代码发布的一个服务器没有问题,而生产服务器返回HTTP错误415 -不受支持的媒体类型的任何put和post请求的api。简单的json文本有效负载,没有任何文件内容失败。
在Chrome developer控制台中,来自服务器的响应具有此有效负载以及http错误415。
{"Message":"The request contains an entity body but no Content-Type header. The inferred media type 'application/octet-stream' is not supported for this resource."}
这两台服务器都在使用netscaler进行负载平衡。相同的框架和窗口更新。
如果服务器具有相同的代码(除了来自web.config的配置值),服务器上的哪些配置会导致问题?
相同的代码在不同的服务器上工作;在内容编码头或内容类型请求标头中添加charset=utf8或charset=utf-8不会在这两个环境中发生任何更改(在一个有或没有的环境上工作,在另一个有或没有的环境上使用错误415 )。
发布于 2022-11-08 18:06:28
在项目(packages.config)中引入这些包似乎导致了我的问题:
<package id="Microsoft.IdentityModel.Abstractions" version="6.24.0" targetFramework="net45" />
<package id="Microsoft.IdentityModel.Logging" version="6.24.0" targetFramework="net45" />
<package id="Microsoft.IdentityModel.Tokens" version="6.24.0" targetFramework="net45" />我能够删除它们(我只需要Base64UrlEncoder来处理一个端点中的一个base64编码参数),重新部署,问题就消失了。
我仍然不明白为什么它在本地和我们的dev服务器上没有问题。
此外,如果这有帮助的话,我从github问题中读到了https://github.com/umbraco/Umbraco-CMS/issues/3796:<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net45" />会产生同样的错误,建议的操作是将评级降到5.2.6
https://stackoverflow.com/questions/74352962
复制相似问题