我有一个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。我对如何进行完全不知所措。
有人可以帮忙吗?
谢谢!
答案 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>