Я пытаюсь добавить ссылку на веб-службу на основе Java на мой проект .NET с использованием созданного ею WSDL, но каждый раз, когда я добавлял его, я не могу найти его из кода, не говоря уже о вызове его одного веб-метода.
Я могу добавить его в порядке, и он отображается в моем дереве проектов, но я не вижу методов, и я не могу найти или получить доступ к веб-сервису из своего кода. Когда я щелкните правой кнопкой мыши и попытаюсь просмотреть его в браузере объектов, он не появится. Что дает?
Это содержимое wsdl (я не учитывал типы данных, чтобы он был небольшим):
<?xml version="1.0"?>
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://logiasoftware.fi/HandyManifestFargoOnRamp2010_01/"
targetNamespace="http://logiasoftware.fi/HandyManifestFargoOnRamp2010_01/">
<wsdl:message name="Response">
<wsdl:part name="DefaultInput" element="tns:Response"/>
</wsdl:message>
<wsdl:message name="Request">
<wsdl:part name="DefaultOutput" element="Request"/>
</wsdl:message>
<wsdl:portType name="HandyManifestFargoOnRampServiceSoap">
<wsdl:operation name="SaveFCO">
<wsdl:input message="tns:Request"/>
<wsdl:output message="tns:Response"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HandyManifestFargoOnRampServiceSoap" type="tns:HandyManifestFargoOnRampServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="SaveFCO">
<soap:operation soapAction="http://logiasoftware.fi/HandyManifestFargoOnRampService/SaveFCO" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="GenericSoapFault">
<soap:fault name="GenericSoapFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HandyManifestFargoOnRampService">
<wsdl:port name="HandyManifestFargoOnRampServiceSoap" binding="tns:HandyManifestFargoOnRampServiceSoap">
<soap:address location="http://logiasoftware.fi/HandyManifestFargoOnRampService/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
UPDATE
Попытка запустить wsdl через svcutil.exe дает мне интересные сообщения об ошибках:
R1014: The children of the soap:Body element in a ENVELOPE MUST be namespace qualified. The use of unqualified element names may cause naming conflicts, therefore qualified names must be used for the children of soap:Body.
- Part 'DefaultOutput' of message 'Request' from service description with targetNamespace='http://logiasoftware.fi/HandyManifestFargoOnRamp2010_01/'.
и...
Error: Unable to import binding 'HandyManifestFargoOnRampServiceSoap' from namespace 'http://logiasoftware.fi/HandyManifestFargoOnRamp2010_01/'.
- Unable to import operation 'SaveFCO'.
- The element 'http://logiasoftware.fi/HandyManifestFargoOnRamp2010_01/:Response' is missing.
Итак, это говорит мне, что элементы сообщения должны иметь то же самое пространство имен, указанное (http://logiasoftware.fi/) в следующих разделах:
<wsdl:message name="Response">
<wsdl:part name="DefaultInput" element="tns:Response"/>
</wsdl:message>
<wsdl:message name="Request">
<wsdl:part name="DefaultOutput" element="Request"/>
</wsdl:message>
Но как мне это сделать?