我有MVC4 WebApi项目,在我的开发机器上工作正常,但正在行动
奇怪的是在部署的服务器上.这两个框都是带有IIS 7.5的Server 2008
我有一个控制器,单个Post方法采用复杂类型
一个参数.我强行使用XmlMediaType格式化程序和XmlSerialization
HttpConfiguration.Formatters.XmlFormatter.UseXmlSerializer = true,复杂类型是“old school”XmlSerializable.
对于相同的请求,我的开发框正确地将正文中的XML反序列化为
复杂类型的实例和从Post方法返回给客户端的结果是正确的.在另一台机器上,参数实例在到达Post方法时为null.
我必须重申,这是相同的代码和相同的请求(除了
主机名).这让我觉得必须有环保的东西
机器之间有所不同.不幸的是,经过多次搜索,我仍然不知道那可能是什么.
我还应该指出,如果我修改我的Post方法以获取字符串参数
然后我自己在内部进行反序列化,两个框上的行为是相同和正确的.
我还实现了一个自定义序列化器(XmlFormatter.SetSerializer)
开发箱工作;另一个产生一个空参数.有趣的是,当我登录时
在这种情况下反序列化之前请求的主体我在两台机器上看到相同的XML.只是一个框在去往Post方法的路上丢弃了反序列化的值.
任何人都可以提供一些关于如何解决这个奇怪问题的建议
行为?
最佳答案 检查控制器上的ModelState.如果反序列化因任何原因失败,则会将其记录为ModelState异常.它可能会帮助你至少弄清楚发生了什么.