viernes, 9 de octubre de 2009

Crear Lista o Biblioteca Dinámicamente en SharePoint Services 3.0 o MOSS 2007 con C#

SharePoint Services 3.0 y SharePoint Server día a día se han vuelto herramientas mas y mas utilizadas por las empresas (Sitio Oficial), pero a veces las funcionalidades que vienen incluidas no son suficientes, y se nos solicita que hagamos desarrollos a la medida.
Tiene rato que trabajo con SharePoint, he trabajado mas del lado de Administración que del lado de Desarrollo, pero hace un tiempo tuve la necesidad de crear una biblioteca de manera dinámica en un proyecto ASP.NET con C#, buscando un poco de información sobre como hacerlo, me encontré con que SharePoint cuenta con una serie de Web Services que podemos utilizar para interactuar con el Servidor. Existen una gran cantidad de Web Services, (Lista completa de Web Services) pero aquí mostraré como crear una lista de manera dinámica…
1. Abrimos Visual Studio (en mi caso VS 2008) y creamos un nuevo Proyecto Web, le ponemos de nombre “ListaDinamica”
2. Vamos al Solution Explorer y damos clic derecho sobre nuestro proyecto->Add Web Reference
Aquí es donde viene la parte interesante, vamos a agregar la referencia a nuestro Web Service de SharePoint, estos se instalan en cada sitio que creemos y se encuentran en la siguiente ruta:
http://<site>/_vti_bin/nombreDelServicio
Donde el nombre del Servicio cambiara dependiendo cual será el que utilicemos, para este ejemplo será el d “Lists”:
http://<site>/_vti_bin/Lists.asmx
Colocamos nuestra URL y damos clic en el botón Go…Una vez que descubra el Web Service, colocamos un nombre en el campo de “Web Reference Name”, ejemplo: “ServicioSharepoint” y damos clic en el botón “Add Reference”…
Free Image Hosting at www.ImageShack.us
3. Ahora agregaremos unos controles a nuestra pagina para probar nuestro Web Service. Aquí sus propiedades:
Control
ID
Text
LabellblTipoListaTipo de Lista:
LabellblNombreNombre:
LabellblDescipcionDescripción:
LabellblResultadoSharepoint
TextBoxtxtNombre
DropDownListddlTipo
TextBoxtxtDescripcion
ButtonbtnCrearCrear
Nos quedaría algo así:
4. Ahora vamos a la parte del código de nuestra pagina, y en el evento Load agregamos el Siguiente código:
 protected void Page_Load(object sender, EventArgs e)
 {
 ddlTipo.Items.Add(new ListItem("Announcements", "104"));
 ddlTipo.Items.Add(new ListItem("Contacts", "105"));
 ddlTipo.Items.Add(new ListItem("Custom List", "100"));
 ddlTipo.Items.Add(new ListItem("Custom List in Datasheet View", "120"));
 ddlTipo.Items.Add(new ListItem("DataSources", "110"));
 ddlTipo.Items.Add(new ListItem("Discussion Board", "108"));
 ddlTipo.Items.Add(new ListItem("Document Library", "101"));
 ddlTipo.Items.Add(new ListItem("Events", "106"));
 ddlTipo.Items.Add(new ListItem("Form Library", "115"));
 ddlTipo.Items.Add(new ListItem("Issues", "1100"));
 ddlTipo.Items.Add(new ListItem("Links", "103"));
 ddlTipo.Items.Add(new ListItem("Picture Library", "109"));
 ddlTipo.Items.Add(new ListItem("Survey", "102"));
 ddlTipo.Items.Add(new ListItem("Tasks", "107"));
}


Esto agregar al DropDownList los diferentes tipos de Listas que podemos crear con el Web Service de SharePoint.
Para mas información ver:
http://msdn.microsoft.com/en-us/library/lists.lists.addlist.aspx

5. En la vista de diseño vamos a dar doble clic sobre el botón crear y agregamos el siguiente código:
protected void btnCrear_Click(object sender, EventArgs e)
    {
        System.Net.NetworkCredential credenciales = new System.Net.NetworkCredential("usuarioSharepoint","PasswordSharepoint", "DominioSharepoint");
        ServicioSharePoint.Lists servicioList = new ServicioSharePoint.Lists();
        servicioList.Credentials = credenciales;
        XmlNode ndList = servicioList.AddList(txtNombre.Text, 
        txtDescripcion.Text, int.Parse(ddlTipo.SelectedValue));
        lblResultadoSharepoint.Text= ndList.OuterXml;
    }

Si examinamos el código vemos que primero creamos un Objeto de tipo NetworkCredential, donde le mandamos al constructor el Usuario, Password y el dominio de nuestro sitio de SharePoint, tiene que ser un usuario valido y además tener permisos para crear Listas.
Después creamos una instancia de nuestro Servicio de SharePoint y le asignamos las credenciales, para que las utilice al momento de invocar el Web Service.
En la siguiente instrucción donde mandamos llamar el método AddList del Servicio observamos que lo que nos devuelve es un XmlNode, que es donde viene toda la información  de la lista creada en el Sitio. Por simplicidad del ejemplo solo lo coloque en una etiqueta, pero tal vez ustedes puedan mostrar la información al usuario con un poco de mas formato.
Para que este código funcione de manera adecuada hay que agregar una referencia a:
System.Xml;
6. Probamos nuestro código y vemos los resultados en nuestro sitio de SharePoint:


Como pueden ver no es tan complicado como podemos pensar, si necesitan mas información sobre el Servicio Lists visiten:
http://msdn.microsoft.com/en-us/library/lists.aspx

Y mas Información sobre los Web Service de SharePoint y el alcance de los mismos, chequen:

http://msdn.microsoft.com/en-us/library/dd878586.aspx

Saludos y hasta la próxima.

En Cámara Lenta – Discovery Channel

Ayer tuve un tiempo de descanso en mi casa, y me puse a ver la tele, cambiándole de canal por todo el cable, me encontré con este programa de Discovery, se los recomiendo mucho, el ver como las cosas pasan en cámara lenta es impresionante y por lo menos a mi me encanto. Aquí les dejo la liga del programa para mas información:

http://www.tudiscovery.com/web/camaralenta/

Saludos y hasta la próxima.

jueves, 8 de octubre de 2009

Solución al Error “There is insufficient memory or disk space. Save the document now” o “Memoria Insuficiente. Guarde el documento ahora.”

El otro día tuve la necesidad de Crear Documento de Word dinámicamente desde ASP.NET, y encontré muchos ejemplos en la red, busque un código, lo implemente y cuando lo corrí en mi maquina (Windows Vista, Office 2003 y VS 2008) todo jalo de maravilla, pero llego el momento de publicar el sitio en IIS y en un Servidor, y ahí empezaron los problemas, cuando intentábamos crear el documento nos mandaba un error de que no había suficiente memoria, lo cual obviamente no era el problema ya que el Servidor tenia RAM suficiente y espacio en Disco también, investigando encontré que el problema es con la configuración del componente COM utilizado para generar el documento dinámicamente y aquí les dejo como solucionarlo paso a paso:

Primero ejecutamos el siguiente comando desde la ventana de Ejecutar (RUN), en Windows Vista lo pueden escribir en la opción de Iniciar búsqueda del botón de inicio:

DCOMCNFG

Se nos abrirá la ventana de configuración de Servicios de Componentes. Ya ahí vamos a:

Servicios de Componentes->Equipos->MI PC->Configuración DCOM

Free Image Hosting at www.ImageShack.us

Y Buscamos la entrada que dice: “Documento de Microsoft Word” (si su equipo esta en ingles puede que diga “Word Document”) damos clic derecho sobre esta entrada y después en Propiedades. En la Ventana de Propiedades vamos a la ultima pestaña que dice Identidad, y donde nos pregunta “¿'Que cuenta de Usuario desea utilizar para ejecutar esta aplicación?” seleccionamos “El Usuario Interactivo”, aquí una pantalla de lo mencionado:

Alberto Alvarado Jimeéez

Aceptamos los cambios y cerramos la Ventana de Servicios de Componentes, y eso es todo el error debería de quedar corregido.

Saludos y hasta la próxima.

lunes, 5 de octubre de 2009

Red local entre Virtual PC y equipo Host

Muchas veces es necesario generar una maquina virtual para hacer pruebas de servidores, en mi caso tuve que generar una para un servidor de SharePoint, pero tenia el problema de que no lo podía ver desde mi equipo Host, así que me di a la tarea de investigar como era posible y aquí los pasos.

Primero que nada hay que descargar la ultima versión de Virtual PC, que afortunadamente ya es gratuita, aquí el link de descarga:

Descargar Virtual PC

Lo instalamos, y una vez instalado cargamos una maquina virtual que tengamos ya hecha o creamos una desde cero, omitiré esos pasos ya que no es el objetivo de este tutorial. Nuestra Pantalla lucirá así:

De momento es todo con el virtual PC, ahora necesitamos instalar un componente de Windows que será el que nos permita crear la Red Virtual entre la Virtual PC y el sistema Host, este componente se llama, Adaptador de Bucle Invertido de Microsoft, para nuestra fortuna viene integrado dentro de la instalación del SO, así que solo seguiremos los siguientes pasos:

1. Vamos a Panel de Control-> Agregar Hardware…

Free Image Hosting at www.ImageShack.us

2. En el Wizard de agregar Hardware seleccionamos Siguiente en la primer pantalla, después elegimos: “Instalar el Hardware Seleccionado de una Lista (Avanzado)” y damos clic en siguiente.

3. Nos aparecerá una lista con los Tipos de Hardware mas comunes, seleccionamos Adaptadores de Red.

4. En la siguiente pantalla (que tarda un poco en cargar) nos muestra la lista de marcas y adaptadores disponibles por marca, del lado derecho buscamos Microsoft y en la lista del lado derecho seleccionamos “Adaptador de Bucle Invertido de Microsoft” y damos clic una vez mas en siguiente.

Free Image Hosting at www.ImageShack.us

5. En la ultima pantalla damos siguiente una vez mas para confirmar la selección y esperamos en lo que el adaptador se instala.

Esto provocara que se agregue una nueva conexión de red, esta es nuestra red virtual, si vamos ahora a Panel de control->Conexiones de Red veremos el adaptador instalado:

Free Image Hosting at www.ImageShack.us

Ahora vamos a configurar el nuevo Adaptador para poder formar una Red Local entre las dos maquinas…Damos clic Derecho sobre el adaptador, seleccionamos propiedades, verificamos que tenga Seleccionada la opción de Virtual Machine Network Services, y seleccionamos donde dice Protocolo de Internet versión 4 y damos clic en el botón de propiedades de abajo.

En la Ventana que nos sale, vamos a configurar la IP que tendrá nuestro Host dentro de la Red que vamos a montar, vamos a poner las siguientes:

Dirección IP: 192.168.2.1
Mascara de Subred: 255.255.255.0

Free Image Hosting at www.ImageShack.us

Aceptamos esta ventana y cerramos la siguiente, hasta aquí seria todo para el equipo Host, ahora vamos a configurar la Maquina Virtual.

De regreso en el Virtual PC Seleccionamos nuestra Maquina Virtual y damos clic en el botón de propiedades, en la ventana de propiedades vamos a la parte de Red y en la parte derecha seleccionamos un adaptador de red en el primer combo y después seleccionamos “Adaptador de Bucle Invertido de Microsoft”, la configuración queda como sigue:

Free Image Hosting at www.ImageShack.us

Aceptamos todas las configuraciones y arrancamos nuestra Maquina Virtual. una vez que arranca nuestra maquina virtual, vamos a repetir los mismos pasos que en la maquina Host para configurar la IP del adaptador, Estos es:

Vamos a Panel de Control->Administrar Conexiones de Red, Damos clic derecho sobre el adaptador de Red, seleccionamos Propiedades.

En la nueva ventana seleccionamos la opción que dice Protocolo de Internet versión 4 y damos clic sobre el botón propiedades, solo que ahora vamos  a asignara otra IP a la Maquina Virtual pero dentro del mismo rango que la de la maquina Host:

Dirección IP: 192.168.2.2
Mascara de Subred: 255.255.255.0

Free Image Hosting at www.ImageShack.us

Aceptamos la configuración y damos cerrar en la otra ventana.

Ya con esta configuración es suficiente para que tengamos nuestra Red Local entre la maquina Virtual y el equipo Host. Aquí unas imágenes que comprueban lo que menciono:

Vista de la red de la maquina Virtual:

Ping desde la maquina Virtual a la Maquina Host, chequen que es la IP que utilizamos en la configuración de la maquina Host:

Ping desde la maquina Host a la maquina Virtual con la IP que le asignamos:


Ahora podemos montar servicios, compartir carpetas, etc. y tener acceso a ellos desde la maquina Virtual o viceversa.

Bueno hasta aquí este Tutorial, cualquier duda o comentario no duden en dejarlo o mandarme un correo.

Saludos.

Identidad Sustituta

El día de ayer me fui a ver esta película con Bruce Willis, se me hizo muy buena la verdad, es como que una reflejo avanzado de lo que ya hoy en día es nuestra sociedad, nos estamos convirtiendo en una sociedad virtual, solo por mencionar unos ejemplos, ahí esta MySpace, Hi5, FaceBook, el juego tan famoso que creo que todos hemos escuchado de el THE SIMS, etc., en la película hay partes que parecen demasiado absurdas y tontas, pero ya que analizamos con detenimiento lo que ahí sucede, de verdad que no saben cuanto se parece a la vida actual…bueno se las recomiendo mucho y lo dejo a discreción de cada uno de ustedes…

Saludos.

jueves, 1 de octubre de 2009

Concierto de Placebo

Pues con la novedad de que ayer me fui a ver el concierto de Placebo, se los recomiendo mucho, en lo personal no soy muy fan de ellos ni del tipo de música, pero debo decir que vale la pena completamente, así que si alguien tiene oportunidad de irlos a ver de verdad que no se los pierdan.