将Newtonsoft.JSON升级到v10后,某些POST停止工作

问题描述

更新1 :我禁用了SSL,但仍然存在问题。因此,可能与升级OWIN有关。

更新2 :我从头开始,找出导致中断的原因。它将Newstonsoft.JSON从6.0.4升级到10.0.1(最新版本12.0.3也会导致中断)。它是Microsoft.Owin.Security.Google的依赖项。

我正在使用ASP.NET 4.5.2。

我试图在我的网站上使用外部登录,但我发现这样做必须将OWIN升级到最新版本,并将SSL Enabled设置为'true'。我可以使用外部登录名,但是这样做导致我破坏了我的网站。

除某些POSTS之外,一切都正常。通过检查,看来中断的请求是较大的请求(〜3KB)。

我已经与fiddler一起检查了请求,发现请求发送得很好。但是,当它们命中Controller时,model参数将设置为null

以下是中断代码的示例:

    [Authorize]
    [HttpPost]
    [Route("api/Calculation/calcProject")]
    public IHttpActionResult Post_CalcProject(Projectviewmodel model)
    {
        return InvokeOfBS<Projectviewmodel,ProjectResultModel>(_calculationBMS.CalcProject,model);
    }

参数modelProjectviewmodel,但已设置为null

作为一个实验,我将model参数更改为TotalProjectCostviewmodel,该字段的字段比Projectviewmodel少。有趣的是,model未设置为null。相反,它是一个空的TotalProjectCostviewmodel(这很有意义,因为请求JSON不是针对该模型的。)

这是POST代码(TypeScript):

  calcProject(model: Projectviewmodel): Observable<any> {
        return this.http.post('/api/Calculation/calcProject',model,options)
            .map(this.extractDataPost).catch(this.handleError);
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)