0

我有一个 .net 4.0 WCF REST 服务,它在 Windows 7 IIS 7 上本地运行得非常好,但是当我尝试在运行 Windows Server 2003 并具有 IIS 6 的 QA 服务器上部署它时,我开始收到错误请求错误。我已经尝试过这个解决方案,但它对我不起作用。我发送到服务器的 XML 似乎没有被反序列化,我正在使用 XmlSerializer。有任何想法吗?

编辑: 使用 Fiddler 我有异常详细信息:

    Request Error
      The server encountered an error processing the request. The exception message is 'There is an error in XML document (4, 354066).'. See server logs for more details. The exception stack trace is: </p>
      at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader)
   at System.ServiceModel.Dispatcher.UnwrappedTypesXmlSerializerManager.XmlSerializerXmlObjectSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName)
   at System.ServiceModel.Dispatcher.SingleBodyParameterMessageFormatter.ReadObject(Message message)
   at System.ServiceModel.Dispatcher.SingleBodyParameterMessageFormatter.DeserializeRequest(Message message, Object[] parameters)
   at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)
   at System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&amp; rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

xmlvalidation.com告诉我我的 XML 是正确的,而且我在本地 IIS 上使用相同的 XML 得到了正确的响应

解决方法: 这里

4

2 回答 2

0

有2种可能:

  • 这可能是版本差异。您发送到服务的 xml 是相同的。但是 IIS 6 上的 C# dto 类不同,因此反序列化错误。
  • 您使用了一些仅在使用 .net 框架 4 的 WCF 中受支持的数据类型(例如枚举)。

试试这个:

  • 向接受字符串并返回字符串的联系人添加一个新方法。
  • 检查是否适用于两台机器
  • 然后逐渐增加方法的复杂性,直到它与您的实际方法相匹配,并在每次更改后进行测试。
于 2013-07-08T09:29:26.157 回答
0

我正在努力解决的问题不是设置消息的单个文本字段的最大长度。我假设,如果值为 0,则 IIS 采用某种默认值,对于 IIS 7 来说,它比 IIS 6 大,幸运的是,对于我的 XML 消息来说已经足够了。请参考链接。

于 2013-07-10T09:02:46.577 回答