miércoles, 18 de enero de 2017

Manejar Session de ASP.net con el servicio ASP.net State Service

Este servicio permite compartir la sesión entre aplicaciones ASP.net, esto es muy útil para el tema de balanceo de cargas o cuanto se utilizan varios Worker Process (Ya que cada uno maneja su propia memoria por tanto su sesión no es compartida) o la aplicación está alojada en una granja.

¿Qué se requiere? 

Hay que tener instalado el IIS.

Cómo se habilita?

Se debe iniciar el servicio de Windows ASP.net State Service.

 

Importante, por defecto el servicio se encuentra inactivo y escucha por el puerto 42424, además viene configurado por defecto para que no permita conexiones remotas por lo que en caso de querer habilitar las mismas debe modificar el valor de la llave en el siguiente registro de windows.


HKLM\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection   --> El valor debe estar en 1 para que permita las conexiones 




miércoles, 6 de junio de 2012

Como obtener las columnas de todas las tablas con SQL Server

Algunas ocasiones se requiere crear un diccionario de datos sobre un SQL Server, para obtener todas las columnas de todas las tablas de una BD se puede ejecutar este script anónimo begin declare @tabla varchar(100) declare cTablas cursor for select table_name from INFORMATION_SCHEMA.TABLES order by table_name open cTablas fetch cTablas into @tabla while @@FETCH_STATUS=0 begin select @tabla SELECT column_name "Columna",DATA_TYPE "Tipo",ISNULL(CONVERT(varchar,COALESCE(numeric_precision,CHARACTER_MAXIMUM_LENGTH)),'N/A') "Tamaño",is_nullable "Acepta Nulos",' ' "Descripción" FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = @tabla fetch cTablas into @tabla print @tabla end close cTablas deallocate cTablas end

martes, 15 de febrero de 2011

Serializar y Deserializar clases

 using System; 
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
namespace TestStuff
{
public class Configuration
{
#region properties
public List<string> UIComponents { get; set; }
public List<string> Settings { get; set; }
#endregion
//serialize itself
public string Serialize()
{
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(Configuration));
using (StreamWriter xmlTextWriter = new StreamWriter(memoryStream))
{
xs.Serialize(xmlTextWriter, this);
xmlTextWriter.Flush();
//xmlTextWriter.Close();
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
memoryStream.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(memoryStream);
return reader.ReadToEnd();
}
}
//deserialize into itself
public void Deserialize(string xmlString)
{
String XmlizedString = null;
using (MemoryStream memoryStream = new MemoryStream())
{
using (StreamWriter w = new StreamWriter(memoryStream))
{
w.Write(xmlString);
w.Flush();
XmlSerializer xs = new XmlSerializer(typeof(Configuration));
memoryStream.Seek(0, SeekOrigin.Begin);
XmlReader reader = XmlReader.Create(memoryStream);
Configuration currentConfig = (Configuration)xs.Deserialize(reader);
this.Settings = currentConfig.Settings;
this.UIComponents = currentConfig.UIComponents;
w.Close();
}
}
}
static void Main(string[] args)
{
Configuration thisConfig = new Configuration();
thisConfig.Settings = new List<string>(){
"config1", "config2"
};
thisConfig.UIComponents = new List<string>(){
"comp1", "comp2"
};
//serializing the object
string serializedString = thisConfig.Serialize();

Configuration myConfig = new Configuration();
//deserialize into myConfig object
myConfig.Deserialize(serializedString);
}
}

}

lunes, 31 de enero de 2011

Habilitar SSL en un WCF (Https)

Para habilitar el SSL en un WCF el web.config debe contener las siguientes instrucción:

<system.serviceModel>


<behaviors>    


 <endpointBehaviors>


  <behavior name="TestServiceAspNetAjaxBehavior">


   <enableWebScript />


  </behavior>


 </endpointBehaviors>


</behaviors>


<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />


<services>


 <service name="TestService">


  <endpoint address="" behaviorConfiguration="TestServiceAspNetAjaxBehavior"


   binding="webHttpBinding" bindingConfiguration="webBinding" contract="TestService" />


 </service>


</services>


 <bindings>


   <webHttpBinding>


     <binding name="webBinding">


       <security mode="Transport">


       </security>


     </binding>


   </webHttpBinding>


 </bindings>


</system.serviceModel>

lunes, 22 de noviembre de 2010

Subir o bajar el Scroll de un div con JavaScript

Esta es una función para realizarlo con animación

<script type="text/javascript">

var t;
var doLoop = true;

function scrollDivToTop(divid)
{
var div = document.getElementById(divid);

if (div.scrollTop>0 && doLoop)
{
div.scrollTop-=3;
t = setTimeout("scrollDivToTop('" + divid + "')", 1);
}
else clearTimeout(t);
}

function scrollDivToBottom(divid)
{

var div = document.getElementById(divid);

if (div.scrollTop<999999999 && doLoop)
{
div.scrollTop+=3;
t = setTimeout("scrollDivToBottom('" + divid + "')", 1);
}
else clearTimeout(t);
}

function stop()
{
doLoop = false;
setTimeout('doLoop = true;', 5);
}

</script>

Lo importante es esta parte

div.scrollTop=0; //0 para que se suba al principio del div  y 999999999 para que baje al fondo del div

Join entre DataTables en LINQ

private void algo()
{
     DataTable dtPolizas = new DataTable();
     DataTable dtServicios = new DataTable();
     var ret = from p in dtPolizas.AsEnumerable()
               join q in dtServicios.AsEnumerable() on p.Field<int>("ID") equals q.Field<int>("ID") into UP
               from q in UP.DefaultIfEmpty()
               where (q.Field<string>("estado") == "00" || q.Field<string>("estado") == "12" && q.Field<int>("estado") == Convert.ToInt32(DateTime.Now.AddDays(-90).ToString("yyyyMMdd")))
               select new
               {
                   ID = Convert.ToDateTime(p.Field<int>("ID")),
                   Type = p.Field<string>("Type"),
                   Part = q.Field<int>("Part"),
                   Quantity = q.Field<int>("Quantity")
               };
     foreach (var ins in ret)
     {
     }
}

Filtrar caracteres de una cadena con LINQ

private string ReemplazarCadena(string pOrigen, int pTamano)
{
IEnumerable stringQuery =
from ch in pOrigen
where !Char.IsNumber(ch)
select ch;
foreach (char item in stringQuery)
pOrigen = pOrigen.Remove(pOrigen.IndexOf(item),1);

pOrigen = pOrigen.PadLeft(pTamano,'0');
return pOrigen;
}
 
Locations of visitors to this page