繁体   English   中英

IIS 6上的WCF服务托管

[英]WCF service hosting on IIS 6

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

编辑:使用提琴手我有异常详细信息:

    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也会得到正确的响应

解决方案: 这里

有两种可能性:

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

尝试这个:

  • 向该联系人添加一个新方法,该方法接受一个字符串并返回一个字符串。
  • 检查对两个机器都适用
  • 然后逐渐增加方法的复杂性,直到它与您的实际方法匹配,并在每次更改后进行测试。

我正在努力解决的问题未设置消息的单个文本字段的最大长度。 我假设,如果该值为0,则IIS会采用某种默认值,对于IIS 7,该默认值大于IIS 6,而且幸运的是对于我的XML消息而言。 请参考链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM