JSON.NET生产问题

时间:2018-11-17 05:19:47

标签: asp.net-core json.net

我有一个ASPNET Core项目,该项目使用C#和Newtonsoft.JSON 11.0.2运行了一组RESTful服务,我使用NuGet合并了这些服务。当我使用Visual Studio 2017和IIS Express在本地运行所有内容时,一切正常,并且我的JSON Deserializer工作正常进行。

当我在Web Deploy包中发布解决方案,然后在AWS的Windows Server 2016实例上的IIS 10中安装该应用程序时,反序列化器失败。错误是:

Newtonsoft.Json.JsonReaderException:解析值<时遇到意外字符。路径”,第0行,位置0

是否以调试或发布模式发布都没有关系。

我运行了Postman调用,并且返回的JSON都经过验证并生成正确的对象。我确实看到,在解决方案资源管理器中,版本是11.0.2,但是在资产JSON文件中,版本指向10.0.1。在Visual Studio外部的文本编辑器中查看时,.CS项目文件确实显示11.0.2。

当我查看服务器上已部署的应用程序的文件夹时,没有看到任何NewtonSoft DLL,但是看到了其他通过NuGet获得的DLL。鉴于JSON.NET的部署方式,这可能不是问题,但我认为值得一提。

然后,我包括了一个记录器,并将传入的JSON发送到文件中,并且再次按预期验证了所有内容。

我已尽一切努力,确保在应用程序和IIS中都正确实现了CORS。我对如何进行完全不知所措。

有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并通过web.config中的这段代码解决了

<system.webServer>
    <handlers>
        <remove name="WebDAV" />
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <remove name="OPTIONSVerbHandler" />
        <remove name="TRACEVerbHandler" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <modules>
        <remove name="WebDAVModule" />
    </modules>
</system.webServer>