El problema que tengo es que he creado un servicio web y un formulario de Windows (soluciones separadas). Agregué el servicio web a la aplicación de formulario usando una referencia de servicio, puedo pasar una 'int' o una 'cadena' al servicio web sin problema, pero no puedo pasar una matriz de int o Lista <int
>Cómo pasar una lista <int> a una referencia de servicio (C#, VS2008)
código de servicio web es la siguiente:
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Web.Services;
namespace CalculateService
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public int CalcluateSum(List<int> listInt)
{
int sum = listInt.Sum();
return sum;
}
}
}
y el código de cliente es:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace CalculateForm
{
public partial class FormCalculate : Form
{
List<int> intArray = new List<int>();
public FormCalculate()
{
InitializeComponent();
}
private void btnAddNum_Click(object sender, EventArgs e)
{
intArray.Add(Convert.ToInt32(txtAddNum.Text));
txtAddNum.Clear();
listBoxAddNum.Items.Clear();
for (int i = 0; i < intArray.Count; i++)
{
listBoxAddNum.Items.Add(intArray[i]);
}
}
private void btnCalculate_Click(object sender, EventArgs e)
{
CalculateForm.CalculateService.Service1SoapClient client = new CalculateForm.CalculateService.Service1SoapClient();
int result = client.CalcluateSum(intArray);
txtResult.Text = Convert.ToString(result);
}
}
}
el error que estoy consiguiendo es:
Argumento '1': no se puede convertir de 'System.Collections.Generic.List' a 'CalculateForm.CalculateService.ArrayOfInt'
Estoy seguro de que es algo sencillo y que se sentirá tonto cuando alguien lo señala:
)Saludos Carl
Solo cambiaría mi método web :-) A int []. Esto probablemente facilitará la vida de otros consumidores de servicios web. – Robert
Me encantaría pero como es para cursos, especifican que: Crea un nuevo servicio web aspx SOAP (como se discutió en la unidad 1) que calculará la suma de una lista de enteros y devolverá el resultado. No sé si sería posible pasarlo como 'int []' al servicio web, luego convertirlo a 'List ' para realizar la suma, luego devolver un 'int', manteniendo así con la especificación? –
Carl