c# - 为什么我会收到一个错误,即 XML 文档中存在错误?
问题描述
我有一个托管在本地主机上的肥皂网络服务,即使用 Visual Studio 的 iis express。我使用 SOAPUI 发送它的值。如果我传递了正确的值,它可以工作并调试。
但是,如果我传递一个空标签或值,即如果期望一个日期时间并且我传递空标签,那么它甚至在点击 webservices 方法之前就会抛出错误。
那么它是网络服务错误还是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>
解决方案
我不会将其称为 webservice 或 soapUI 错误:该服务按预期工作并拒绝无效内容。
在定义您的 Web 服务的 WSDL 中将是一个 XML 模式,Web 服务运行时环境可以根据该模式验证传入的请求。如果请求未能通过第一道防线,则调用您的服务毫无意义。
推荐阅读
- javascript - 如果任何必填字段为空,如何中止 vue.js 方法发布
- java - 使用流从两个数组创建一个数组
- azure - 连接到 SAP HANA 租户数据库的推荐方法
- azure - Blob 名称后缀限制
- ios - UITableView 与 UICollectionView 在一行中重用来自第一行的集合
- python - SQL Server 的 Python 脚本 - 使用 MERGE 更新值
- linux - 从 shell 脚本中杀死一组特定的进程
- swift - Cloud Firestore 和 Swift - 检索文档并将字段分配给变量以进行处理
- javascript - 每次迭代后更改动画持续时间
- angular - 使用 Visual Studio 2017 SPA 将 --env.prod 值传递给 Webpack 4