ASP.NET:webservice返回{object [0]}而不是int

时间:2009-12-29 16:31:41

标签: asp.net web-services

我有以下简单的网络服务:

     [WebMethod()]
public int Add(int a)
{
    return a + 1;
}

我创建了一个类来调用它(不创建wsdl然后创建代理)。 类似的东西:

 [System.Web.Services.WebServiceBindingAttribute(
Name = "Addrequest",
Namespace = "GenieSoft")]
public class Addrequest :
System.Web.Services.Protocols.SoapHttpClientProtocol
{
public Addrequest()
{
    this.Url = "http://localhost:3880/SoapService/Service.asmx";
}
[System.Web.Services.Protocols.SoapDocumentMethodAttribute(
"GenieSoft/Add",
RequestNamespace = "GenieSoft",
ResponseNamespace = "GenieSoft",
Use = System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public  object[] Add(int a )
{
    object[] results = this.Invoke("Add",new object[] { a });
    return results;
}
}

我创建了该类的对象,然后尝试按如下方式调用webservice:

  Addrequest request = new Addrequest();
    object[] returnedArray =  request.Add(1);

     //object i = returnedArray[0]; // i is equal to  {object[0]} !
    lblresult.InnerText = returnedArray[0].ToString();

我已经在本地调试它并且调用webservice并接收发送的int“1”并返回“2”,但是当我尝试检查返回的所有时,我找到的是{object [0]}据我所知是另一个大小为0的数组。

有人可以通过指出问题来帮助我吗?

注意:我得到了O'Reilly使用Soap编程Web应用程序这本书的例子,我只是将它从字符串更改为int,并且我已经测试了它两种方式 - 作为一个字符串并作为一个int-并在两个测试中得到相同的结果。

1 个答案:

答案 0 :(得分:1)

我想出了问题,显然调用函数的返回dataType导致问题(object []),而在webservice中它是(int)。为了解决这个问题,我修改了webservice以返回一个object []而不是一个int(也可以修改了在调用类中添加以返回int)这样的东西:

public object[] Add(int a)
{
    object[] objects = { a + 1 };
    return objects;
}