Key lookup to Index Seek 01

 

SELECT SUM( PD.dblCargo – PD.dblAbono)  FROM tbFacturaEncXPagarSolicitudCheque FS, tbPolizaEnc PE, tbPolizaDet PD, tbImpuesto I WHERE FS.intFacturaEncXPagar=61371 AND PE.intPolizaEnc=FS.intPolizaEnc AND PD.intPolizaEnc=PE.intPolizaEnc AND I.intCuentaContable=PD.intCuentaContable AND I.intFolio=3

01

CREATE  NONCLUSTERED INDEX tbPolizaDet_Index02 ON [dbo].[tbPolizaDet] (intPolizaEnc) INCLUDE (intCuentaContable,dblCargo, dblAbono)GO

 

 

Advertisements

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