Manejo de sesión con Asp.Net
if (Session["idusuariobs"] == null) { Response.Redirect("Default.aspx"); }
public abstract class clsPaginaSegura : Page { protected override void OnInit(EventArgs e) { base.OnInit(e); clsSesionPersona clsPersona = clsSesionPersona.ObtenerUsuarioSesion(); if (clsPersona == null) Response.Redirect("~/Login.aspx"); else this.Persona = clsPersona; } }
public clsSesionPersona(int intIdUsuario, string strLogin, string strNombre, string strApellido, int intIdPerfil) { IdUsuario = intIdUsuario; Login = strLogin; Nombre = strNombre; Apellido = strApellido; Perfil = intIdPerfil; }
public static clsSesionPersona ObtenerUsuarioSesion() { return HttpContext.Current.Session[strKEY] as clsSesionPersona; }
public static void CrearSesionUsuario(clsSesionPersona Persona) { HttpContext.Current.Session[strKEY] = Persona; }
if (clsPersona == null) Response.Redirect("~/Login.aspx"); else this.Persona = clsPersona;
public partial class Administracion_Seguridad : clsPaginaSegura { }
Servicio de traducción automática en SharePoint 2013
- Síncrona: Se procesan en cuanto se envían.
- Asíncrona: El proceso es realizado por un Timer Job llamado “SharePoint Translation Services” que está puesto a 15 minutos por defecto.
SPServiceContext spContext = SPServiceContext.GetContext(spSite);
SyncTranslator timerJobTranslate =
new
SyncTranslator(spContext, CultureInfo.GetCultureInfo(1033));
timerJobTranslate.OutputSaveBehavior = SaveBehavior.AlwaysOverwrite;
timerJobTranslate.Translate(“http:
//xxxxxxx/Documents/Traduccion.docx” , “http://xxxxxxx/DocumentsTranslate/TraduccionIngles.docx”);
Como podéis ver, la forma síncrona usa la clase SyncTranslator, pasándole el contexto y la cultura nos bastaría para realizar la traducción instantánea, en cambio la forma asíncrona utilizaría la clase TranslationJob.
Con este simple bloque de código ya podríamos realizar una traducción del documento de español a inglés.
Por último solo nos queda ver el resultado de la traducción.
Inicialmente el documento tenía este aspecto
y el resultado final después de la traducción es este
fuente: solidq
Sharepoint 2010 – Consideraciones para la configuración del servicio de búsqueda
- Crear una cuenta de usuario, dominio o local, que tenga privilegios de acceso sobre todo el contenido de Sharepoint que se va a incluir en el proceso de indexación y búsqueda.
- Con la cuenta de usuario creada, registrarla como cuenta administrada de Sharepoint.
- Crear una aplicación de servicio de búsqueda, Search Service Application, en donde se crean las bases de datos respectivas y adicionalmente se registra la cuenta de servicio respectiva que debe ser la misma de los puntos anteriores.
- Configurar las fuentes de contenido, content sources, de acuerdo a la configuración de los sitios de Sharepoint.
- Ejecutar una tarea de “full crawling” sobre el contenido y verificar que la base de datos se ha alimentado con los registros encontrados.
Microsoft lanza Visual Studio Online con foco especial en la nube

www.asociacionaepi.es
Serialización de datos en C# en Binario, Soap y Xml
Lo cual da como resultado lo siguiente:
[Serializable]
public class Empleado:IDeserializationCallback
{
//Definicon de miembros
#region IDeserializationCallback Members
public void OnDeserialization(object sender)
{
DiasLaborados = (DateTime.Now.Subtract(fechaIngreso).Days);
}
#endregion
}
Así, ejecutando nuevamente el código que se encarga de realizar la deserialización tenemos:
Después de serializar obtenemos el siguiente resultado:
De esta manera le estamos indicando al objeto XmlSerializer que deseamos serializar un objeto de tipo Empleado, el cual al momento de invocar el método Serialize, genera un documento XML como el siguiente:
[XmlIgnore]
public int DiasLaborados
{
get
{
return diasLaborados;
}
set
{
diasLaborados = value;
}
}
[XmlAttribute]
public int Identificacion
{
get
{
return identificacion;
}
set
{
identificacion = value;
}
}
Luego de serializar nuevamente el objeto con el código ilustrado anteriormente, obtenemos:
Sobrecarga de operadores en C#
En el ejemplo de hoy plantearemos una clase Vector y luego procederemos a redefinir el operador + para dicha clase. Luego cuando sumemos dos objetos de esa clase vector generaremos otro objeto de dicha clase que resulte de la suma de sus componentes.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SobrecargaOperadores1
{
class VectorEnteros
{
private int []vec;
public VectorEnteros()
{
vec = new int[5];
}
public void Cargar()
{
for (int f = 0; f < vec.Length; f++)
{
Console.Write("Ingrese componente:");
vec[f] = int.Parse(Console.ReadLine());
}
}
public void Imprimir()
{
for (int f = 0; f < vec.Length; f++)
{
Console.Write(vec[f] + " ");
}
Console.WriteLine();
}
public static VectorEnteros operator +(VectorEnteros v1, VectorEnteros v2)
{
VectorEnteros su = new VectorEnteros();
for (int f = 0; f < su.vec.Length; f++)
{
su.vec[f] = v1.vec[f] + v2.vec[f];
}
return su;
}
}
class Program
{
static void Main(string[] args)
{
VectorEnteros v1 = new VectorEnteros();
Console.WriteLine("Carga del primer vector");
v1.Cargar();
VectorEnteros v2 = new VectorEnteros();
Console.WriteLine("Carga del segundo vector");
v2.Cargar();
Console.WriteLine("Primer Vector");
v1.Imprimir();
Console.WriteLine("Segundo Vector");
v2.Imprimir();
VectorEnteros vt;
vt = v1 + v2;
Console.WriteLine("Vector Resultante");
vt.Imprimir();
Console.ReadKey();
}
}
}
Delegados en C#
Una alternativa
La solución usando delegados
Solamente tendríamos que añadir el método:
Habilitar la depuración remota de eventos en las app de SharePoint
Habrá que escribir un nombre para el namespace del bus de datos y aceptar:
Hay que esperar un rato, mientras el Service bus se está activando:
Una vez que esté creada, hay que pinchar en ella y pinchar en “Información de conexión”:
Copiamos la “Cadena de conexión”:
Una vez hayamos hecho esto, podremos depurar eventos remotos en nuestra app.