1

我做了一个简单的网络服务

wsdl:

<wsdl:definitions name='mysum' >

<wsdl:types>
 <xsd:schema 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:tns="http://www.my-uni-project.info/joomla/components/com_jv_vm_soa/"
 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="mysum"
   targetNamespace="http://www.my-uni-project.info/joomla/components/com_jv_vm_soa/"
   xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

   <xsd:complexType name="mysumRequest">
    <xsd:all>
     <xsd:element minOccurs="0" name="n1" type="xsd:int"/>
     <xsd:element minOccurs="0" name="n2" type="xsd:int"/>
    </xsd:all>
   </xsd:complexType>   

   <xsd:element name="mysumResponse" type="xsd:int"/>
  </xsd:schema>
 </wsdl:types>

 <wsdl:message name="mysumRequest">
   <wsdl:part name="parameters" element="tns:mysumRequest" />
 </wsdl:message> 
 <wsdl:message name="mysumResponse">
   <wsdl:part name="result" element="tns:mysumResponse" />
 </wsdl:message> 


 <wsdl:portType name="mysum">
  <wsdl:operation name="mysum">
   <wsdl:input message="tns:mysumRequest"/>
   <wsdl:output message="tns:mysumResponse"/>
  </wsdl:operation>
 </wsdl:portType> 

 <wsdl:binding name="mysumSOAP" type="tns:mysum">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
  <wsdl:operation name="mysum">
   <soap:operation soapAction="mysum" />
   <wsdl:input>
    <soap:body use="literal" />
   </wsdl:input>
   <wsdl:output>
    <soap:body use="literal" />
   </wsdl:output>
  </wsdl:operation>
 </wsdl:binding> 

 <wsdl:service name="mysum">
  <wsdl:port name="mysumSOAP" binding="tns:mysumSOAP">
    <soap:address location="http://www.my-uni-
    project.info/joomla/components/com_jv_vm_soa/mysum.php" />
  </wsdl:port>
 </wsdl:service>

</wsdl:definitions>

服务:

function mysum($parameters) {

$result = $parameters->item[0]->value + $parameters->item[1]->value; return $result ; }

ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache $server = new SoapServer("mysum.wsdl"); $server->addFunction("mysum"); $server->handle();

我可以从 php 客户端访问:

$client = new SoapClient("http://www.my-uni- project.info/joomla/components/com_jv_vm_soa/mysum.wsdl"); $params = array('n1' => '4', 'n2' => '8');

try { 
  $result = $client->__soapCall('mysum', array('parameters' => $params));

echo $result; } catch (SoapFault $exception) { echo $exception;
}

我尝试创建一个 C# 客户端,所以首先我创建了一个服务引用“mysum”,然后在表单上添加了一个按钮和一个标签,并为该按钮添加了以下代码

 private void button1_Click(object sender, EventArgs e)
    {
        mysum s = new mysum();
        label1.Text = "" + s.mysum(2, 3);                
    }

当我运行它时,我收到此错误:

Error 5 The type or namespace name 'mysum' could not be found (are you 
missing a using directive or an assembly reference?) 

该服务已上线

谢谢你先进的约翰

4

2 回答 2

0

Typically you can determine if you can resolve the problem using a directive by right-clicking on the object in question, in this case mysum, and seeing if you can 'Resolve Using ' where is the name of your directive.

于 2010-10-20T14:43:46.227 回答
0

I think your problem is that you are adding the service as a service reference instead of web service reference.

To add a web service reference

  1. Add service reference
  2. Hit the Advanced button on the window
  3. Hit Add Web Reference
  4. Enter the service url

Also,

Make sure you have added the System.Web.Services namespace reference in your project.

Hope it helps.

于 2013-01-25T21:03:17.297 回答