Crear Servicios Web y consumirlos sin Referenciarlos

Este proceso es factible cuando requerimos utilizar herramientas con un framework superior a 2.0.

Lo primero es crear un Servicio Web (Web Service) y crear un metodo que acepte httpGet en nuestro proyecto web con framework 3.5 o superior.

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public bool MetodoWeb
{
//Aqui va tu codigo
}

Se tiene que asegurar que exista el siguiente Nodo en el archivo Web.Config

 

Ahora si, dentro de nuestro codigo de Framework 2.0, en donde especificamos la ruta de nuestro Servicio Web, el nombre del metodo y los parametros que le vamos a enviar.

string wsRuta = string.Empty;
string wsServicio = string.Empty;
string wsMetodo = string.Empty;

wsRuta = “http:/localhost:8023”;
wsServicio = “ServicioWeb.asmx”;
wsMetodo = “MetodoWeb”;
string hola = string.Format(“{0}/{1}/{2}”, wsRuta, wsServicio, wsMetodo);
var request = (HttpWebRequest)WebRequest.Create(string.Format(“{0}/{1}/{2}”, wsRuta, wsServicio, wsMetodo));

StringBuilder sbs = new StringBuilder();
sbs.Append(string.Format(“{0}={1}”, “Parametro1”, “Valor1”));
sbs.Append(string.Format(“&{0}={1}”, “Paramtero2”, “Valor2”));
var data = Encoding.ASCII.GetBytes(sbs.ToString());

request.Method = “POST”;
request.ContentType = “application/x-www-form-urlencoded”;
request.ContentLength = data.Length;

using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
try
{
var response = (HttpWebResponse)request.GetResponse();

var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
}
catch (WebException wex)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(“ERROR:” + wex.Message + “. STATUS: ” + wex.Status.ToString());

if (wex.Status == WebExceptionStatus.ProtocolError)
{
var response = ((HttpWebResponse)wex.Response);
sb.AppendLine(string.Format(“Status Code : {0}”, response.StatusCode));
sb.AppendLine(string.Format(“Status Description : {0}”, response.StatusDescription));

try
{
StreamReader reader = new StreamReader(response.GetResponseStream());
sb.AppendLine(reader.ReadToEnd());
}
catch (WebException ex) { throw; }
}

throw new Exception(sb.ToString(), wex);
}

Cuando se detecta algun problema en el codigo, el sistema regresa por default un error 500, por lo cual se agrego el Catch de “WebException “, en donde se despliega de manera mas entendible el error y poder atacarlo mas efectivamente.

Con esto, no tuvimos que agregar la referencia web en nuestro proyecto y pudimos consumir el Web Service por un POST.

-MrDonPh0x

hqdefault

Advertisements

Using Regular Expression Visual Stdio

Replace:
public string StrMetodoPago
{
get { return strMetodoPago; }
set { strMetodoPago = value; }
}
For this:
public string StrMetodoPago
{
get { return string.IsNullOrEmpty(strMetodoPago) ? string.Empty : strMetodoPago; }
set { strMetodoPago = value; }
}

Search Expression:
get.\{.[return]+.{[a-zA-Z0-9]+};.\}

Replace Expression:
get { return string.IsNullOrEmpty(\1) ? string.Empty : \1; }

Validar los RadioButtonList

Para validar un radiobuttonlist, solo es necesario revisar su propiedad selectedvalue, si se encuentra vacia, indica que el usuario no seleccionó nungunja de sus opciones. Por ejemplo:

if (rblActivo.SelectedValue == “”)
{
objUtils.mostrarAlerta(this, “Falta campo Activo”);
}
if (rblNacional.SelectedValue == “”)
{
objUtils.mostrarAlerta(this, “Falta campo Nal/Imp”);
}
if (rblFisica.SelectedValue == “”)
{
objUtils.mostrarAlerta(this, “Falta campo Fisica/Moral”);
}

Error al abirir un reporte en devexpress

Si aparece el siguiente error al abrir un reporte elaborado en devexpress:
Error de resticciones deshabilitadas non-null foreign key en reporte

Esto pasa ya que en el dataset correspondiente al reporte (archivo .xsd) se genera un codigo en automático, como el siguiente:

xs:unique name="Constraint1" msdata:PrimaryKey="true"


Solo tienes que eliminar todo el nodo y funcionara correctamente. En caso de que no sea asi revisa la longitud de los campos y que niguno de ellos almacene valores nulos.