I'm attempting to take a set of existing WSDL and XSD files and create a SOAP API endpoint in my .Net Core application using the SoapCore NuGet package.
I have the WSDL being returned as expected by configuring SoapCore as shown here, however, when I use SoapUI to create a new SOAP project based on my WSDL, it does two requests. The first fetches the WSDL, which I would expect, and succeeds. But then it does another request on the same endpoint, but with the included querystring parameters ?xsd&name=
. This causes SoapCore to fail because the request is asking for an XSD but no filename is given.
I don't know if the problem is with SoapUI, SoapCore, or my code. Why is SoapUI making this request? Is this normal? Does a Soap API endpoint have to have both a WSDL and XSD to work? I put the XSDs that I have in the same folder as the WSDL and pointed SoapCore to them as shown in the link above, but the problem remains.
I don't usually work with SOAP, so hopefully this question makes sense.
Update:
Bogdan asked an interesting question about imports. The XSDs do have imports that reference other files. However, the WSDL has the XSDs embedded in the wsdl:types element. Within this tag there are also import tags, but they do not have a schemaLocation
attribute. Here is an example:
<xs:import xmlns:xs="http://www.w3.org/2001/XMLSchema"
namespace="http://www.starstandards.org/STAR" />
Could this be why SoapUI is making a call with a blank file name? Is this tag malformed or valid? What is the default path/filename for an <xs:import>
if the schemaLocation
attribute is not included?