我正在尝试获取一组现有的 WSDL 和 XSD 文件,并使用 SoapCore NuGet 包在我的 .Net Core 应用程序中创建一个 SOAP API 端点。
通过如下所示配置 SoapCore,我按预期返回了 WSDL ,但是,当我使用 SoapUI 根据我的 WSDL 创建一个新的 SOAP 项目时,它会执行两个请求。第一个获取 WSDL,这是我所期望的,并且成功了。但随后它在同一端点上执行另一个请求,但使用包含的查询字符串参数?xsd&name=
。这会导致 SoapCore 失败,因为请求正在请求 XSD,但没有给出文件名。
我不知道问题出在 SoapUI、SoapCore 还是我的代码上。为什么 SoapUI 会提出这个请求?这是正常的吗?Soap API 端点是否必须同时具有 WSDL 和 XSD 才能工作?我将我拥有的 XSD 与 WSDL 放在同一个文件夹中,并将 SoapCore 指向它们,如上面的链接所示,但问题仍然存在。
我通常不使用 SOAP,所以希望这个问题有意义。
更新:
博格丹问了一个关于进口的有趣问题。XSD 确实具有引用其他文件的导入。但是,WSDL 在 wsdl:types 元素中嵌入了 XSD。在这个标签中也有导入标签,但它们没有schemaLocation
属性。这是一个例子:
<xs:import xmlns:xs="http://www.w3.org/2001/XMLSchema"
namespace="http://www.starstandards.org/STAR" />
这可能是 SoapUI 使用空白文件名进行调用的原因吗?这个标签是错误的还是有效的?如果不包含<xs:import>
该属性,则默认路径/文件名是什么?schemaLocation