【问题标题】:Why do I get an error that there is an error in XML document?为什么我会收到一个错误,即 XML 文档中存在错误?
【发布时间】:2019-10-27 13:34:05
【问题描述】:

我在本地主机上托管了一个肥皂网络服务,即使用 Visual Studio 的 iis express。我使用 SOAPUI 发送它的值。如果我传递了正确的值,它可以工作并调试。

但是,如果我传递一个空标签或值,即如果预期日期时间并且我传递空标签,那么它甚至在点击 webservices 方法之前就会引发错误。

那么是 webservice 错误还是 soapui 错误?

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <soap:Fault>
         <soap:Code>
            <soap:Value>soap:Sender</soap:Value>
         </soap:Code>
         <soap:Reason>
            <soap:Text xml:lang="en">System.Web.Services.Protocols.SoapException: Server was unable to read request. ---> System.InvalidOperationException: There is an error in XML document (41, 34). ---> System.FormatException: String was not recognized as a valid DateTime.
   at System.DateTimeParse.ParseExactMultiple(String s, String[] formats, DateTimeFormatInfo dtfi, DateTimeStyles style)
   at System.DateTime.ParseExact(String s, String[] formats, IFormatProvider provider, DateTimeStyles style)
   at System.Xml.Serialization.XmlCustomFormatter.ToDate(String value)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read3_Item(Boolean isNullable, Boolean checkType)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read10_Item(Boolean isNullable, Boolean checkType)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read11_DT_FunctionalLocation(Boolean isNullable, Boolean checkType)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read12_SI_FunctionalLocation_In_Async()
   at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer.Deserialize(XmlSerializationReader reader)
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   --- End of inner exception stack trace ---
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
   --- End of inner exception stack trace ---
   at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()</soap:Text>
         </soap:Reason>
         <soap:Detail/>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>

【问题讨论】:

  • 您的肥皂需要一个日期时间参数,而您要么没有提供,要么格式不正确
  • 嗨,如果我从任何测试应用程序或类似的东西传递 Datetime.Min 它不会引发错误。但是在 SOAPUI 中它确实是这样的。我需要在代码中处理它还是一种行为?
  • 就是这个样子,不能再改了,因为这是客户端给我们的wsdl,用来做webservice。
  • 我的问题是为什么它在去网络服务之前就失败了
  • 查看 SOAPUI 中的日期时间是如何写的,例如 this related question

标签: c# web-services c#-4.0 soapui asmx


【解决方案1】:

我不会将其称为 webservice 或 soapUI 错误:该服务按预期工作并拒绝无效内容。

在定义您的 Web 服务的 WSDL 中将有一个 XML 模式,Web 服务运行时环境可以根据该模式验证传入的请求。如果请求未能通过第一道防线,则调用您的服务毫无意义。

【讨论】:

  • 你知道是否可以在请求失败时“捕获”错误吗?可以在 IIS 中完成吗?我要做的是显示自定义错误消息,甚至返回不同的状态代码
猜你喜欢
  • 2020-10-25
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多