<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEQDRnw_eCp7ImA9WhRaE0U.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042</id><updated>2012-02-16T00:52:57.240-08:00</updated><category term="UPA" /><category term="Service Applications" /><category term="Microsoft" /><category term="Configuracion SharePoint 2010; Errores SharePoint" /><category term="My Sites" /><category term="México" /><category term="D.F." /><category term="Language Pack's" /><category term="Visual studio" /><category term="javascript" /><category term="HTTPS" /><category term="FS4SP" /><category term="Silverlight Toolkit" /><category term="SharePoint API" /><category term="Codeplex" /><category term="Visual Studio 2010" /><category term="Desarrollo SharePoint" /><category term="Delegate Controls" /><category term="SharePoint Magazine" /><category term="Microsoft; Codeplex; Screencast;" /><category term="Xml" /><category term="PowerShell" /><category term="Workflows" /><category term="host header" /><category term="WSS; IIS 7" /><category term="Configuracion SharePoint 2010;" /><category term="onload function" /><category term="VSeWSS" /><category term="Silverlight 3" /><category term="WebCast" /><category term="Virtual Machine" /><category term="Search Service Application" /><category term="Comunidad SharePoint" /><category term="Web Services" /><category term="Troubleshooting" /><category term="Screencast" /><category term="Silverlight 3.0" /><category term="SharePoint" /><category term="Screencast;" /><category term="Visio Services" /><category term="SharePoint 2010" /><category term="Configuracion SharePoint 2010" /><category term="Web parts" /><category term="Office 2010" /><category term="appcmd" /><category term="Configuracion SharePoint 2010; SharePoint 2010" /><category term="WSS" /><category term="Templates" /><category term="CAS" /><category term="SharePoint; Desarrollo SharePoint" /><category term="Errores SharePoint" /><category term="Big Bang" /><category term="WebParts" /><category term="Tip" /><category term="Features" /><category term="WCF" /><category term="Gerardo Reyes Ortiz" /><category term="PeoplePicker" /><category term="SharePoint Designer" /><category term="Fast Search Server 2010 For SharePoint" /><category term="HTTP.SYS" /><category term="SharePoint; Instalación SharePoint; Troubleshooting; Search Service" /><category term="Custom Editor Parts" /><category term="FBA" /><category term="UPS" /><category term="Eventos SharePoint" /><category term="Silverlight" /><title>Tirando Código</title><subtitle type="html">Blog acerca de mis experiencias con Silverlight,&lt;br&gt;
WSS 3.0, MOSS y algunas otras tecnologías</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/AJHM" /><feedburner:info uri="blogspot/ajhm" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><entry gd:etag="W/&quot;C0UNR3c4fip7ImA9WhRQF0k.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-3124242900168046595</id><published>2011-12-12T17:47:00.000-08:00</published><updated>2011-12-12T17:54:56.936-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-12T17:54:56.936-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint API" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title>[SharePoint 2010] - Resolver usuarios y grupos a partir de su Login Name o Email - SPUtility.ResolvePrincipal</title><content type="html">&lt;div style="text-align: justify;"&gt;Cuantas veces no hemos requerido buscar a un usuario a partir de su Email o de su LoginName, para obtener uno de estos datos, por ejemplo para enviarle un correo o asignarle una tarea dentro de un flujo de trabajo. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En el pasado utilizábamos el método &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.getloginnamefromemail.aspx" target="_blank"&gt;GetLoginNameFromEmail&lt;/a&gt; de la clase &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.aspx" target="_blank"&gt;SPUtility&lt;/a&gt;&amp;nbsp;si conocíamos el email y necesitábamos el Login Name del usuario, sin embargo en la versión 2010 de la API de SharePoint este método ha sido marcado como obsoleto, lo que significa que si lo usamos producirá una alerta la cual nos recomienda, en su lugar, el uso del método &lt;a href="http://msdn.microsoft.com/en-us/library/ms458648.aspx" target="_blank"&gt;ResolvePrincipal&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La ventaja de utilizar ResolvePrincipal es, en primera, que obtenemos de regreso un objeto del tipo &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.spprincipalinfo_members.aspx" target="_blank"&gt;SPPrincipalInfo&lt;/a&gt; el cual tiene varias propiedades útiles para trabajar con usuarios y grupos. Segunda, que como parámetro para realizar la búsqueda recibe el Display Name, Login Name o Email (solo uno de ellos), es decir que si conocemos cualquiera de estos tres valores de un usuario o grupo&amp;nbsp;es posible resolverlo. Otro aspecto importante es que la búsqueda que realiza no está restringida a un sitio de SharePoint en particular.&lt;/div&gt;&lt;br /&gt;
A continuación un par de ejemplos de cómo utilizar este método para resolver usuarios.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;SPWeb web = SPContext.Current.Site.RootWeb; //or SPControl.GetContextWeb(Context) or workflowProperties.Site.RootWeb, etc

//obtener el usuario a partir del display name
SPPrincipalInfo info = SPUtility.ResolvePrincipal(web, "Homero J. Simpson", SPPrincipalType.User, SPPrincipalSource.MembershipProvider | SPPrincipalSource.Windows, null, false);

//obtener el usuario a partir del Email
info = SPUtility.ResolvePrincipal(web, "hsimpson@sp2010.com", SPPrincipalType.All, SPPrincipalSource.All, web.AllUsers, true);
&lt;/pre&gt;&lt;br /&gt;
Por último, aunque no menos importante, mencionar que este método no esta disponible en soluciones SandBox.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Happy Coding!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-3124242900168046595?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/3124242900168046595/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=3124242900168046595&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/3124242900168046595?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/3124242900168046595?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/12/resolver-usuarios-partir-de-su-login.html" title="[SharePoint 2010] - Resolver usuarios y grupos a partir de su Login Name o Email - SPUtility.ResolvePrincipal" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;A0QERHg8eCp7ImA9WhRSGU8.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-6164288227376167206</id><published>2011-11-21T18:35:00.000-08:00</published><updated>2011-11-21T18:35:05.670-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-21T18:35:05.670-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Troubleshooting" /><category scheme="http://www.blogger.com/atom/ns#" term="Search Service Application" /><category scheme="http://www.blogger.com/atom/ns#" term="Configuracion SharePoint 2010" /><title>QI for IEnumVARIANT failed on the unmanaged  server</title><content type="html">Bueno, por si alguna vez les ha ocurrido este error al tratar de ingresar a la página de administración del servicio de búsqueda.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-hwZQXOIevGE/Tsr_S49wAOI/AAAAAAAAAdI/Vcr6zYwkMw4/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://2.bp.blogspot.com/-hwZQXOIevGE/Tsr_S49wAOI/AAAAAAAAAdI/Vcr6zYwkMw4/s400/img2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-B1LI1YHyO9s/Tsr_TLD7ogI/AAAAAAAAAdQ/f8upwDJSOKo/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-B1LI1YHyO9s/Tsr_TLD7ogI/AAAAAAAAAdQ/f8upwDJSOKo/s400/img1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Inclusive al intentar recuperar algún valor mediante PowerShell este mismo error aparece, una posible solución que a mí me funciono fue reiniciar el IIS utilizando el siguiente comando&lt;br /&gt;
&lt;br /&gt;
iisreset /noforce&lt;br /&gt;
&lt;br /&gt;
Esto en cada uno de los servidores de crawling&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Happy Configuring!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-6164288227376167206?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/6164288227376167206/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=6164288227376167206&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/6164288227376167206?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/6164288227376167206?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/11/qi-for-ienumvariant-failed-on-unmanaged.html" title="QI for IEnumVARIANT failed on the unmanaged  server" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-hwZQXOIevGE/Tsr_S49wAOI/AAAAAAAAAdI/Vcr6zYwkMw4/s72-c/img2.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0IGSX0_cSp7ImA9WhRQF08.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-7457703683313009324</id><published>2011-11-21T17:23:00.000-08:00</published><updated>2011-12-12T12:25:28.349-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-12T12:25:28.349-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Workflows" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title>Crear custom workflow tasks forms [No Infopath]</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;Como recordaran en el post anterior, mostré un ejemplo de cómo crear columnas de sitio y content types programáticamente, en este post voy a dar un ejemplo de cómo crear un formulario personalizado para el tipo de contenido que creamos en ese ejemplo anterior.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;Es común que creemos tipos de contenido personalizados (custom content types) para asociarlos a la lista de tareas de workflows (Workflow Tasks), esto con el fin de poder recolectar más información del usuario cuando se le asigna una tarea dentro de un flujo de trabajo, y también es muy común que necesitemos personalizar el formulario de captura que el usuario utiliza para ingresar esa información adicional que necesitamos recolectar dentro del flujo de trabajo. Por lo anterior y utilizando el tipo de contenido que creamos en el post anterior, y que de manera premeditada hice que heredara del tipo de contenido WorkflowTask (recuerdan?).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;También es importante mencionar que el custom approval workflow task form que crearemos será utilizando un formulario ASP.NET, creo que la mayoría sabe que no simpatizo mucho con InfoPath, además que ejemplos de esos hay bastantes en la red.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;El escenario de ejemplo es el siguiente, cree una lista llamada “Solicitud Vacaciones”, en la que los usuarios podrán capturar las peticiones para tomar días de vacaciones, una vez que registren sus solicitud se enviará un correo de aviso al usuario responsable y se le asignará una tarea para que apruebe o rechace dicha solicitud, en caso de aprobación o rechazo se le notificará al usuario solicitante.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;Como primer paso, creamos un flujo de trabajo sencillo, en este caso construiré un flujo de aprobación de solicitud de vacaciones, como se aprecia en la siguiente imagen:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ucKRpYFkBeU/TrijBNaFX4I/AAAAAAAAAbg/q4uEJAU4MWk/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-ucKRpYFkBeU/TrijBNaFX4I/AAAAAAAAAbg/q4uEJAU4MWk/s320/img2.png" width="158" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: inherit;"&gt;No voy a explicar el cómo construir el flujo de trabajo, dado que la finalidad de este post no es mostrar cómo hacer un flujo de trabajo, &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;adicional a que hay muchos ejemplos en la red. Sin embargo voy a compartir el código por si a alguien le interesa ver cómo fue construido el Workflow.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
Como se aprecia en la siguiente imagen, se agregó una actividad de tipo CreateTaskWithContentType la cual recibe el Id del Content Type a partir del cual se creara la tarea que será asignada al usuario responsable de autorizar la solicitud de vacaciones.&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-WOWgSjOs4Jw/Trik0bOQG3I/AAAAAAAAAbw/DzpjPdRF1LM/s1600/img4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://4.bp.blogspot.com/-WOWgSjOs4Jw/Trik0bOQG3I/AAAAAAAAAbw/DzpjPdRF1LM/s320/img4.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/-oq0jLmVvopw/TrikUVIoY-I/AAAAAAAAAbo/tWbCjk0TERI/s1600/img3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-oq0jLmVvopw/TrikUVIoY-I/AAAAAAAAAbo/tWbCjk0TERI/s1600/img3.png" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Como se aprecia en la imagen, el ID del tipo de contenido se asocia a una propiedad declarada en código, la que manipularemos para buscar y asignar el ID de tipo de contenido correcto cuando el Workflow se inicialice, en el evento WorkflowActivated.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp"&gt;private void onWorkflowActivated(object sender, ExternalDataEventArgs e)
{
 WorkflowContext.Initialize(workflowProperties);
 workflowID = workflowProperties.WorkflowId;

 //si el tipo de contenido no ha sido asociado a la lista de tareas
 try
 {
  if (workflowProperties.TaskList.ContentTypes[contentTypeName] == null)
  {
   SPContentType ctype = WorkflowContext.Web.AvailableContentTypes[contentTypeName];
   if (ctype != null)
   {
    workflowProperties.TaskList.ContentTypes.Add(ctype);
    workflowProperties.TaskList.Update();
   }
  }

  SPContentType customContentType = WorkflowContext.Web.AvailableContentTypes[contentTypeName];
  this.CustomContentTypeId = customContentType.Id.ToString();

 }
 catch (Exception ex)
 {
  //registramos la excepcion
 }
}
&lt;/pre&gt;&lt;br /&gt;
&lt;strong&gt;Estableciendo el formulario de edición al tipo de Contenido&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;Regresando a la definición del tipo de contenido que creamos en el post anterior,  que cómo podrán recordar fue provisionado programáticamente. El siguiente paso es establecer por lo menos el formulario de edición del tipo de contenido, es decir, el formulario que el usuario visualizará cuando vaya a aprobar o rechazar la tarea asignada. Para que el Content Type sepa que formulario debe invocar, utilizaremos la propiedad EditFormUrl la que estableceremos con el valor del formulario ASP.NET que vamos a crear en el siguiente paso.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Noten la línea 131:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="height: 400px; overflow: scroll;"&gt;&lt;pre class="brush: csharp; highlight:[131]"&gt;using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;

namespace WF1.Features.Feature1
{
    /// &lt;summary&gt;
    /// This class handles events raised during feature activation, deactivation, installation, uninstallation, and upgrade.
    /// &lt;/summary&gt;
    /// &lt;remarks&gt;
    /// The GUID attached to this class may be used during packaging and should not be modified.
    /// &lt;/remarks&gt;

    [Guid("dd6b6ec4-3391-46de-a659-55244237f346")]
    public class Feature1EventReceiver : SPFeatureReceiver
    {
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            try
            {
                SPWeb web = null;
                if (properties.Feature.Parent is SPSite)
                {
                    SPSite sites = (SPSite)properties.Feature.Parent;
                    web = sites.RootWeb;
                }
                else
                {
                    web = (SPWeb)properties.Feature.Parent;
                }
                if (web == null)
                    return;

                //Nombre del grupo de Content Types que crearemos
                string contentTypeGroupName = "Blog - Content Types";
                //Nombre del tipo de contenido que crearemos
                string contentTypeName = "Blog - Response Workflow Content Type";
                //Nombre del grupo de columnas de sitio que crearemos
                string columnGroupName = "Blog - Site Columns";
                //nombre de la columna de sitio que permitira al usuario seleccionar su respuesta (Approve | Reject)
                string choiceFieldName = "ChoiceWFResponse";
                //nombre de la columna de sitio que permitira al usuario capturar comentarios a cerca de su respuesta
                string commentsFieldName = "CommentsWFResponse";


                SPFieldMultiLineText approveRejectCommentsField = null;
                SPFieldChoice approveRejectChoiceField = null;

                /*Columna de sitio para seleccionar Aprobar o Rechazar*/
                //mucho ojo! Validamos si la columa de sitio ya existe
                if (!web.Fields.ContainsField(choiceFieldName))
                {
                    string approveReject = web.Fields.Add(choiceFieldName, SPFieldType.Choice, true);
                    approveRejectChoiceField = (SPFieldChoice)web.Fields.GetFieldByInternalName(approveReject);
                    approveRejectChoiceField.Group = columnGroupName;
                    approveRejectChoiceField.EditFormat = SPChoiceFormatType.RadioButtons;
                    approveRejectChoiceField.Choices.Add("Approve");
                    approveRejectChoiceField.Choices.Add("Reject");
                    approveRejectChoiceField.DefaultValue = "Approve";
                    approveRejectChoiceField.Update();
                }
                //Si ya existe, solo obtenemos una referencia a la columna
                else
                {
                    approveRejectChoiceField = web.Fields[choiceFieldName] as SPFieldChoice;
                }

                /*Columna de sitio para permitir al usuario ingresar un comentario*/
                if (!web.Fields.ContainsField(commentsFieldName))
                {
                    string comments = web.Fields.Add(commentsFieldName, SPFieldType.Note, true);
                    approveRejectCommentsField = (SPFieldMultiLineText)web.Fields.GetFieldByInternalName(comments);
                    approveRejectCommentsField.Group = columnGroupName;
                    approveRejectCommentsField.Update();
                }
                else
                {
                    approveRejectCommentsField = web.Fields[commentsFieldName] as SPFieldMultiLineText;
                }

                //
                //Ahora creamos el tipo de contenido
                //

                //heredamos del WorkflowTask Content Type
                SPContentType workflowTaskCType = web.AvailableContentTypes[SPBuiltInContentTypeId.WorkflowTask];
                SPContentType approvalRejectCType = null;
                bool isUpdating = false;

                //validamos si el tipo de contenido ya existe
                if (web.AvailableContentTypes[contentTypeName] == null)
                {
                    approvalRejectCType = new SPContentType(workflowTaskCType, web.ContentTypes, contentTypeName);
                    approvalRejectCType = web.ContentTypes.Add(approvalRejectCType);
                    approvalRejectCType.Group = contentTypeGroupName;
                }
                else
                {
                    approvalRejectCType = web.ContentTypes[contentTypeName];
                    isUpdating = true;
                }

                if (!isUpdating)
                {
                    //agregamo la columna de Seleccion
                    SPFieldLink approveRejectFieldRef = new SPFieldLink(approveRejectChoiceField);
                    approveRejectFieldRef.Required = true;
                    approveRejectFieldRef.DisplayName = "Approve or Reject the task";
                    approvalRejectCType.FieldLinks.Add(approveRejectFieldRef);

                    //agregamo la columna de Comentarios
                    SPFieldLink commentsFieldRef = new SPFieldLink(approveRejectCommentsField);
                    commentsFieldRef.DisplayName = "Comments";
                    approvalRejectCType.FieldLinks.Add(commentsFieldRef);
                }
                else
                {
                    //Actualizamos la columna de Seleccion
                    SPFieldLink approveRejectFieldRef = approvalRejectCType.FieldLinks[approveRejectChoiceField.Id];
                    approveRejectFieldRef.Required = true;
                    approveRejectFieldRef.DisplayName = "Approve or Reject the task";

                    //Actualizamos la columna de Comentarios
                    SPFieldLink commentsFieldRef = approvalRejectCType.FieldLinks[approveRejectCommentsField.Id];
                    commentsFieldRef.DisplayName = "Comments";
                }

                approvalRejectCType.EditFormUrl = "_layouts/WF1/CustomApprovalTask.aspx";

                //actualizamos el tipo de contenido
                approvalRejectCType.Update(true);
            }
            catch (Exception ex)
            {
                //log Exception
            }
        }

    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
Existen algunas otras propiedades con las cuales podemos indicar que formulario debe mostrarse dependiendo de la vista que sea solicitada, tales como: DisplayFormUrl, MobileDisplayFormUrl, etc, etc&lt;/div&gt;&lt;br /&gt;
&lt;strong&gt;Creación del formulario&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;El siguiente paso es la creación del formulario que será invocado cuando el usuario haga clic en editar tarea. Para esto agregamos un elemento Application Page y la nombramos como CustomApprovalTask.aspx, el cual usaremos para crear la forma de edición para el tipo de contenido.&lt;/div&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-qfN0YmmlzO4/TrjDrDzazyI/AAAAAAAAAcA/nrJ2w7C0vKQ/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="273" src="http://1.bp.blogspot.com/-qfN0YmmlzO4/TrjDrDzazyI/AAAAAAAAAcA/nrJ2w7C0vKQ/s400/img1.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-oUECBWGDwec/TrjDruh9-GI/AAAAAAAAAcI/Jx9_DtobiCU/s1600/img5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-oUECBWGDwec/TrjDruh9-GI/AAAAAAAAAcI/Jx9_DtobiCU/s320/img5.png" width="217" /&gt;&lt;/a&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;A continuación el código del formulario, en realidad es bastante sencillo solo presenta un par de controles, una caja de texto para capturar los comentarios y un dropdownlist para elegir una opción (Aprobar, Rechazar). &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-4Z4wsZSwdgI/TrjFL0LZyNI/AAAAAAAAAcQ/h52nRTj_I3U/s1600/img6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://4.bp.blogspot.com/-4Z4wsZSwdgI/TrjFL0LZyNI/AAAAAAAAAcQ/h52nRTj_I3U/s400/img6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="height: 400px; overflow: scroll;"&gt;&lt;pre class="brush: csharp;"&gt;using System;
using System.Collections;
using System.Web;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.Workflow;

namespace WF1.Layouts
{
    public partial class CustomApprovalTask : LayoutsPageBase
    {
        protected SPList targetTasksList;
        protected SPListItem targetTask;
        protected SPWorkflow workflowInstance;
        protected SPWorkflowModification workflowModification;

        string choiceFieldName = "ChoiceWFResponse";
        //nombre de la columna de sitio que permitira al usuario capturar comentarios a cerca de su respuesta
        string commentsFieldName = "CommentsWFResponse";


        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            /**/
            // Retrieve the current task list and task item
            targetTasksList = Web.Lists[new Guid(Request.Params["List"])];
            targetTask = targetTasksList.GetItemById(int.Parse(Request.Params["ID"]));

            //Obtiene el autorizador de la tarea
            string Aprobador = Convert.ToString(targetTask[SPBuiltInFieldId.AssignedTo]);
            int IdAporbador = Convert.ToInt32(Aprobador.Remove(Aprobador.IndexOf(';'), Convert.ToInt32(Aprobador.Length - Aprobador.IndexOf(";"))));

            if ((Web.CurrentUser.ID != IdAporbador) )
            {
                ClosePopup();
            }

            /**/
            if (!this.Page.IsPostBack)
            {
                // Populate fields on the form
                lblTitle.Text = targetTask["Title"] != null ? targetTask["Title"].ToString() : string.Empty;
                txtCommnents.Text = targetTask[commentsFieldName] != null ? targetTask[commentsFieldName].ToString() : string.Empty;

                ListItem selectedItem = ddlResponse.Items.FindByValue(targetTask[choiceFieldName].ToString());

                if (selectedItem != null)
                {
                    this.ddlResponse.ClearSelection();
                    selectedItem.Selected = true;
                }
            }

        }

        protected void UpdateTaskFromControls(SPListItem targetTask, System.Collections.Hashtable taskProperties)
        {
            // Update task item fields
            taskProperties[SPBuiltInFieldId.TaskStatus] = SPWorkflowStatus.Completed;
            taskProperties[commentsFieldName] = txtCommnents.Text;
            taskProperties[choiceFieldName] = ddlResponse.SelectedValue;
        }

        public void btnSaveTask_Click(object sender, EventArgs e)
        {
            try
            {
                Hashtable taskProperties = new Hashtable();
                UpdateTaskFromControls(targetTask, taskProperties);
                SPWorkflowTask.AlterTask(targetTask, taskProperties, false);

            }
            catch (Exception exception)
            {
                SPUtility.Redirect("Error.aspx", SPRedirectFlags.RelativeToLayoutsPage,
                HttpContext.Current,
                "ErrorText=" + SPHttpUtility.UrlKeyValueEncode(exception.Message));
            }
            ClosePopup();
        }

        public void Cancel_Click(object sender, EventArgs e)
        {
            ClosePopup();
        }

        protected void ClosePopup()
        {
            this.Response.Clear();
            this.Response.Write("Closing ...&lt;script type="text/javascript"&gt;
" +
            "window.frameElement.commitPopup();
&lt;/script&gt;");
            this.Response.Flush();
            this.Response.End();
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-apTTwXDnxUU/Tsr1y5QGLbI/AAAAAAAAAcc/aBTIdFPRcpU/s1600/img8.png" imageanchor="1"&gt;&lt;img border="0" height="216" src="http://2.bp.blogspot.com/-apTTwXDnxUU/Tsr1y5QGLbI/AAAAAAAAAcc/aBTIdFPRcpU/s400/img8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kY1wbcMxvCk/Tsr1zFFCU-I/AAAAAAAAAck/aNf2U_mqOkw/s1600/img7.png" imageanchor="1"&gt;&lt;img border="0" height="262" src="http://3.bp.blogspot.com/-kY1wbcMxvCk/Tsr1zFFCU-I/AAAAAAAAAck/aNf2U_mqOkw/s400/img7.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-HNKNPlLRJvc/Tsr1zEJb7wI/AAAAAAAAAcs/j2F4ys8WA_E/s1600/img9.png" imageanchor="1"&gt;&lt;img border="0" height="155" src="http://4.bp.blogspot.com/-HNKNPlLRJvc/Tsr1zEJb7wI/AAAAAAAAAcs/j2F4ys8WA_E/s400/img9.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_rCee_Fe3nc/Tsr1zYPOPrI/AAAAAAAAAc8/_tjaOlUi5b4/s1600/img10.png" imageanchor="1"&gt;&lt;img border="0" height="170" src="http://4.bp.blogspot.com/-_rCee_Fe3nc/Tsr1zYPOPrI/AAAAAAAAAc8/_tjaOlUi5b4/s400/img10.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Pueden descargar el código de &lt;a href="https://skydrive.live.com/embedicon.aspx/Blog/WF1%20v2.rar?cid=102ea40b907accfb&amp;amp;sc=documents"&gt;aquí&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Happy Coding!&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-7457703683313009324?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/7457703683313009324/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=7457703683313009324&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/7457703683313009324?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/7457703683313009324?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/11/crear-custom-workflow-tasks-forms-no.html" title="Crear custom workflow tasks forms [No Infopath]" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-ucKRpYFkBeU/TrijBNaFX4I/AAAAAAAAAbg/q4uEJAU4MWk/s72-c/img2.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUQGSHY6eSp7ImA9WhdaF0o.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-714814874222727447</id><published>2011-10-12T20:01:00.000-07:00</published><updated>2011-10-27T20:42:09.811-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-27T20:42:09.811-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><title>Creando Site Columns y Content Types programáticamente</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;El día de hoy quiero compartir con ustedes un ejemplo de cómo crear columnas de sitio y tipos de contenido programáticamente. El objetivo final es crear un tipo de contenido que herede del tipo de contenido WorkflowTask (el que se utiliza para las tareas que se asignan en los flujos de trabajo), utilizando dos columnas de sitio, la primera será una columna que permitirá al usuario capturar su respuesta (Aprobar | Rechazar), la segunda permitirá capturar comentarios acerca de su respuesta.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;Sin mucho preámbulo comencemos creando un proyecto en blanco con un elemento Feature con scope Site, al cual agregaremos un Event Receiver&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-swZaxotX5pY/TqobqtvCY8I/AAAAAAAAAbI/FBDbqC5hAv4/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/-swZaxotX5pY/TqobqtvCY8I/AAAAAAAAAbI/FBDbqC5hAv4/s320/img1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: inherit;"&gt;Inmediatamente después comenzamos a tirar un poco de código en el método FeatureActivated para crear en primera instancia las dos columnas de sitio que utilizaremos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="height: 400px; overflow: scroll;"&gt;&lt;pre class="brush: csharp"&gt;SPWeb web = null;
if (properties.Feature.Parent is SPSite)
{
    SPSite sites = (SPSite)properties.Feature.Parent;
    web = sites.RootWeb;
}
else
{
    web = (SPWeb)properties.Feature.Parent;
}
if (web == null)
    return;
                
//Nombre del grupo de Content Types que crearemos
string contentTypeGroupName = "Blog - Content Types";
//Nombre del tipo de contenido que crearemos
string contentTypeName = "Blog - Response Workflow Content Type";
//Nombre del grupo de columnas de sitio que crearemos
string columnGroupName = "Blog - Site Columns";
//nombre de la columna de sitio que permitira al usuario seleccionar su respuesta (Approve | Reject)
string choiceFieldName = "ChoiceWFResponse";
//nombre de la columna de sitio que permitira al usuario capturar comentarios a cerca de su respuesta
string commentsFieldName = "CommentsWFResponse";


SPFieldMultiLineText approveRejectCommentsField = null;
SPFieldChoice approveRejectChoiceField = null;
                
/*Columna de sitio para seleccionar Aprobar o Rechazar*/
//mucho ojo! Validamos si la columa de sitio ya existe
if (!web.Fields.ContainsField(choiceFieldName))
{
    string approveReject = web.Fields.Add(choiceFieldName, SPFieldType.Choice, true);
    approveRejectChoiceField = (SPFieldChoice)web.Fields.GetFieldByInternalName(approveReject);
    approveRejectChoiceField.Group = columnGroupName;
    approveRejectChoiceField.EditFormat = SPChoiceFormatType.RadioButtons;
    approveRejectChoiceField.Choices.Add("Approve");
    approveRejectChoiceField.Choices.Add("Reject");
    approveRejectChoiceField.DefaultValue = "Approve";
    approveRejectChoiceField.Update();
}
//Si ya existe, solo obtenemos una referencia a la columna
else
{
    approveRejectChoiceField = web.Fields[choiceFieldName] as SPFieldChoice;
}

/*Columna de sitio para permitir al usuario ingresar un comentario*/
if (!web.Fields.ContainsField(commentsFieldName))
{
    string comments = web.Fields.Add(commentsFieldName, SPFieldType.Note, true);
    approveRejectCommentsField = (SPFieldMultiLineText)web.Fields.GetFieldByInternalName(comments);
    approveRejectCommentsField.Group = columnGroupName;
    approveRejectCommentsField.Update();
}
else
{
    approveRejectCommentsField = web.Fields[commentsFieldName] as SPFieldMultiLineText;
}&lt;/pre&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;Una vez que las hemos creado, procedemos a crear el tipo de contenido utilizando las columnas de sitio.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="height: 400px; overflow: scroll;"&gt;&lt;pre class="brush: csharp"&gt;//
//Ahora creamos el tipo de contenido
//

//heredamos del WorkflowTask Content Type
SPContentType workflowTaskCType = web.AvailableContentTypes[SPBuiltInContentTypeId.WorkflowTask];
SPContentType approvalRejectCType = null;
bool isUpdating = false;

//validamos si el tipo de contenido ya existe
if (web.AvailableContentTypes[contentTypeName] == null)
{
    approvalRejectCType = new SPContentType(workflowTaskCType, web.ContentTypes, contentTypeName);
    approvalRejectCType = web.ContentTypes.Add(approvalRejectCType);
    approvalRejectCType.Group = contentTypeGroupName;
}
else
{
    approvalRejectCType = web.ContentTypes[contentTypeName];
    isUpdating = true;
}

if (!isUpdating)
{
    //agregamo la columna de Seleccion
    SPFieldLink approveRejectFieldRef = new SPFieldLink(approveRejectChoiceField);
    approveRejectFieldRef.Required = true;
    approveRejectFieldRef.DisplayName = "Approve or Reject the task";
    approvalRejectCType.FieldLinks.Add(approveRejectFieldRef);

    //agregamo la columna de Comentarios
    SPFieldLink commentsFieldRef = new SPFieldLink(approveRejectCommentsField);
    commentsFieldRef.DisplayName = "Comments";
    approvalRejectCType.FieldLinks.Add(commentsFieldRef);
}
else
{
    //Actualizamos la columna de Seleccion
    SPFieldLink approveRejectFieldRef = approvalRejectCType.FieldLinks[approveRejectChoiceField.Id];
    approveRejectFieldRef.Required = true;
    approveRejectFieldRef.DisplayName = "Approve or Reject the task";

    //Actualizamos la columna de Comentarios
    SPFieldLink commentsFieldRef = approvalRejectCType.FieldLinks[approveRejectCommentsField.Id];
    commentsFieldRef.DisplayName = "Comments";
}

//actualizamos el tipo de contenido
approvalRejectCType.Update(true);
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;Hacemos Deploy de nuestro proyecto y validamos que se hayan creado las columnas de sitio y el tipo de contenido&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zSXN1WgPHrQ/Tqofvv6NoRI/AAAAAAAAAbQ/gdNbF0yiG5A/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="93" src="http://2.bp.blogspot.com/-zSXN1WgPHrQ/Tqofvv6NoRI/AAAAAAAAAbQ/gdNbF0yiG5A/s400/img2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-awXmyORgv3U/TqofwlIHP5I/AAAAAAAAAbY/aSNRFEUnQEo/s1600/img3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://1.bp.blogspot.com/-awXmyORgv3U/TqofwlIHP5I/AAAAAAAAAbY/aSNRFEUnQEo/s400/img3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Listo!&lt;br /&gt;
&lt;br /&gt;
Pueden descargar el código de &lt;a href="https://rauy7a.blu.livefilestore.com/y1pcovz-IukpTNTo7utqhw9l-3Jd55dnN6lkF0zWy0peN8SUPkVKzBp0M2Zl4dctqnlX-h9EVTSe36sFKPG5W_dmQ/WF1%20v1.rar?download&amp;amp;psid=1"&gt;aquí&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy Coding!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-714814874222727447?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/714814874222727447/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=714814874222727447&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/714814874222727447?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/714814874222727447?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/10/creando-site-columns-y-content-types.html" title="Creando Site Columns y Content Types programáticamente" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-swZaxotX5pY/TqobqtvCY8I/AAAAAAAAAbI/FBDbqC5hAv4/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUcHRXc8cCp7ImA9WhdaFk0.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-1839555935580941895</id><published>2011-09-20T21:02:00.000-07:00</published><updated>2011-10-25T21:23:54.978-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-25T21:23:54.978-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Workflows" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Delegate Controls" /><category scheme="http://www.blogger.com/atom/ns#" term="Visio Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><title>Reemplazando el diagrama de Workflow en SharePoint 2010 usando un Delegate Control</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;Como sabemos, los controles delegados (Delegate Controls) son básicamente contenedores que encapsulan contenido y que SharePoint permite substituir este contenido con contenido personalizado diferente a la implementación predeterminada. Una de sus funciones primordiales es proveer de una manera fácil de hacer Branding de los sitios SharePoint. SharePoint define varios controles delegados dentro de la master page v4. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fQxdf3SrwJY/TqeGl1Fxu6I/AAAAAAAAAaA/kxrtsLoflVY/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://4.bp.blogspot.com/-fQxdf3SrwJY/TqeGl1Fxu6I/AAAAAAAAAaA/kxrtsLoflVY/s640/img1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;En este post, les propongo usar esta característica para sustituir (y mejorar) la manera predeterminada en que se muestran los diagramas de los flujos de trabajo en la página de detalle del flujo de trabajo en SharePoint 2010.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-CDfbj8jTUgU/TqeGx2dEhII/AAAAAAAAAaI/f2ULUADNJbE/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="105" src="http://1.bp.blogspot.com/-CDfbj8jTUgU/TqeGx2dEhII/AAAAAAAAAaI/f2ULUADNJbE/s640/img2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;Y poder adicionarle un poco de vida!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Ng9TpJkB4z8/TqeGzIzC_zI/AAAAAAAAAaQ/PzrTyIPckr4/s1600/img3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Ng9TpJkB4z8/TqeGzIzC_zI/AAAAAAAAAaQ/PzrTyIPckr4/s1600/img3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;Primero se debe crear un proyecto nuevo y vacío (obviamente de SharePoint 2010)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AkpBMPFbe3M/TqeG1d5pINI/AAAAAAAAAag/r-U1CVKvBoM/s1600/img5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="219" src="http://3.bp.blogspot.com/-AkpBMPFbe3M/TqeG1d5pINI/AAAAAAAAAag/r-U1CVKvBoM/s320/img5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;Agregamos un usercontrol, en el cual vamos a escribir el código aspx que sustituirá al diagrama de flujo. De hecho este user control tendra el mismo contenido que el WorkflowStatus.ascx, y solo agregaremos una referencia a un archivo js que será el encargado de manipular el diagrama de Visio utilizando la API de Visio Services.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-jKfDnkMoKTE/TqeG11v_h0I/AAAAAAAAAao/moPEe6q_4t8/s1600/img6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-jKfDnkMoKTE/TqeG11v_h0I/AAAAAAAAAao/moPEe6q_4t8/s1600/img6.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;Agregamos una nueva Feature con Scope Site a la solución, la cual se encargará de desplegar el elemento que crearemos en el siguiente paso&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6K5sJncFvn8/TqeG2qyhIFI/AAAAAAAAAaw/s2J-1wPjxAM/s1600/img7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-6K5sJncFvn8/TqeG2qyhIFI/AAAAAAAAAaw/s2J-1wPjxAM/s1600/img7.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;La magia viene aquí; agregamos un nuevo elemento a la solución de tipo Empty Element y agregamos la siguiente definición:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-w-q2bDs5O4I/TqeG2xOirVI/AAAAAAAAAa4/cE7ASSvgxlw/s1600/img8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://1.bp.blogspot.com/-w-q2bDs5O4I/TqeG2xOirVI/AAAAAAAAAa4/cE7ASSvgxlw/s640/img8.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;El valor del atributo Id y el atributo Sequence son importantes ya que el Id debe coincidir con la definición del control que queremos reemplazar, y el valor de la propiedad Sequence debe ser menor a la especificada en la definición original del control para que tenga precedencia sobre este. A continuación como fue definido originalmente el control en la feature VisioWebAccess&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5e06gIg1xdg/TqeG3c2EIoI/AAAAAAAAAbA/GxerP30Cdh4/s1600/img9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="129" src="http://1.bp.blogspot.com/-5e06gIg1xdg/TqeG3c2EIoI/AAAAAAAAAbA/GxerP30Cdh4/s640/img9.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;"&gt;Si quieren saber como poder agregar este tipo de mejoras a los diagramas de Visio, pueden checar dos de mis anteriores posts:&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;"&gt;&lt;a href="http://gerardo-reyes.blogspot.com/2011/05/visio-services-api.html"&gt;Visio Services API&lt;/a&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;a href="http://gerardo-reyes.blogspot.com/2011/05/agregando-controles-silverlight-un.html"&gt;Agregando  controles Silverlight a un diagrama de Visio Services&lt;/a&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-family: Times New Roman;"&gt;  &lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;Anticipando algunas de sus posibles preguntas:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;span style="font-family: Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-family: Times New Roman;"&gt;  &lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;&lt;strong&gt;Porque utilizar un delegate control solo para adicionar la referencia a un archivo js?&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;span style="font-family: Times New Roman;"&gt;  &lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;Se podría haber agregado la referencia a este archivo .js desde la Master Page, incluso se puede sustituir el archivo workflowstatus.js que es el que se encarga de manera predeterminada del dibujado de todos los diagramas de Visio para los flujos de trabajo, sin embargo esto es muy invasivo ya que sería un cambio global y de la manera que este post propone el cambio sería a nivel de Sitio, es decir, lo menos invasivo posible.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Happy Coding!&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-1839555935580941895?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/1839555935580941895/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=1839555935580941895&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/1839555935580941895?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/1839555935580941895?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/09/reemplazando-el-diagrama-de-workflow-en.html" title="Reemplazando el diagrama de Workflow en SharePoint 2010 usando un Delegate Control" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-fQxdf3SrwJY/TqeGl1Fxu6I/AAAAAAAAAaA/kxrtsLoflVY/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkMCQ308fCp7ImA9WhdaFUw.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-8604977339382132630</id><published>2011-09-06T21:13:00.000-07:00</published><updated>2011-10-24T21:54:22.374-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-24T21:54:22.374-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><category scheme="http://www.blogger.com/atom/ns#" term="Configuracion SharePoint 2010" /><title>Descargar los prerequisitos de SharePoint 2010 offline</title><content type="html">&lt;div style="text-align: justify;"&gt;  &lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-MX;"&gt;&lt;span style="font-family: inherit;"&gt;Como muchos de ustedes saben, el nuevo instalador de SharePoint 2010 nos permite instalar los prerequisitos que nos hagan falta antes de comenzar con el proceso de instalación, lo que es bastante cómodo si recordamos la forma manual que se utilizaba para instalar SharePoint 2007.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QEuloJKL24I/TqY9iMSTsII/AAAAAAAAAZg/rZkjSU9pJFA/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://4.bp.blogspot.com/-QEuloJKL24I/TqY9iMSTsII/AAAAAAAAAZg/rZkjSU9pJFA/s320/img1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-MX;"&gt;Sin embargo hay algunos escenarios &lt;strike&gt;en el mundo real&lt;/strike&gt; en los cuales no podemos utilizar esta ventajosa herramienta, específicamente me refiero al siguiente escenario:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-MX;"&gt;Estamos haciendo un despliegue de una granja SharePoint en un ambiente (Desarrollo, QA, Producción, DRP, etc.) en el cual no tenemos acceso a internet y aunque hemos suplicado por él, el equipo de Seguridad no lo permitiría jamás.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: ES-MX;"&gt;Luego entonces lo que necesitamos hacer es descargar en una máquina en la cual si tengamos acceso a internet, todos los componentes de prerequisitos para SharePoint 2010 y posteriormente copiar esos archivos a cada uno de los servidores en los que haremos el despliegue de la granja.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;SQL Server 2008 Native Client (sqlncli.msi) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Microsoft Chart Controls for the Microsoft .NET Framework 3.5 (MSChart.exe) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Microsoft .NET Framework version 3.5 SP1 (dotnetfx35.exe) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Windows PowerShell 2.0 (Windows6.0-KB968930-x64.msu) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;KB976394 (Windows6.0-KB976394-x64.msu) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;KB976492 (Windows6.1-KB976462-v2-x64.msu) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Windows Identity Foundation (WIF) for Windows Server 2008 R2 (Windows6.1-KB974405-x64.msu) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Microsoft Sync Framework Runtime (Synchronization-v2.0-x64-ENU.msi) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Microsoft Filter Pack 2.0 (FilterPack64bit.exe) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Microsoft SQL Server 2008 Analysis Services ADOMD.NET (SQLSERVER2008_ASADOMD10.msi) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;SQL Server 2008 R2 November CTP Reporting Services Add-in (rsSharePoint.msi) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Microsoft Server Speech Platform (SpeechPlatformRuntime.msi) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;"&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;ü&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Speech recognition language for English (MSSpeech_SR_en-US_TELE.msi)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Listado de requisitos de software para SharePoint 2010 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc262485.aspx#section4"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;http://technet.microsoft.com/en-us/library/cc262485.aspx#section4&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Calibri;"&gt;No obstante, esta solución es demasiado manual y nos consume demasiado tiempo, (el Facebook no se actualiza solo, o si?)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;span style="font-family: Calibri;"&gt;Por lo que les recomiendo utilicen mejor, el script “&lt;/span&gt;&lt;a href="http://autospinstaller.codeplex.com/releases/view/44442"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;Download-All_SP2010_PreReqs.ps1&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;"&gt;” que forma parte de la utilería &lt;/span&gt;&lt;a href="http://autospinstaller.codeplex.com/"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;AutoSPInstaller&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;"&gt;, la cual podemos descargar de &lt;/span&gt;&lt;a href="http://www.codeplex.com/"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;Codeplex&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;"&gt;, y que nos permite hacer esa descarga de manera automática hacia una carpeta para posteriormente copiarlos hacia los servidores que no tienen acceso a internet.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6ZL-phEZRI4/TqY-Ka4Ge8I/AAAAAAAAAZo/eK9nRSsrMdY/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="108" src="http://1.bp.blogspot.com/-6ZL-phEZRI4/TqY-Ka4Ge8I/AAAAAAAAAZo/eK9nRSsrMdY/s320/img2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-family: Times New Roman;"&gt;  &lt;/span&gt;&lt;span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-hansi-font-family: Calibri;"&gt;Al ejecutarlo nos pedirá la ruta en la cual se descargaran todos los componentes, la indicamos y hacemos click en OK&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1KxBV_yAwnE/TqY-lX07plI/AAAAAAAAAZw/WWhRLSvBDl0/s1600/img3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="89" src="http://4.bp.blogspot.com/-1KxBV_yAwnE/TqY-lX07plI/AAAAAAAAAZw/WWhRLSvBDl0/s320/img3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;El script comienza a trabajar&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-DMrsyG5LOYM/TqY-80t2EJI/AAAAAAAAAZ4/LAoyWTX4MGc/s1600/img4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-DMrsyG5LOYM/TqY-80t2EJI/AAAAAAAAAZ4/LAoyWTX4MGc/s320/img4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;Y ya solo nos resta esperar a que se terminen de descargar todos los componentes, los cuales quedarán en la carpeta "PrerequisiteInstallerFiles".&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;Espero que este tip les sirva.&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;strong&gt;Happy Configuring&lt;/strong&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;span style="font-family: Times New Roman;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-8604977339382132630?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/8604977339382132630/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=8604977339382132630&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/8604977339382132630?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/8604977339382132630?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/09/descargar-los-prerequisitos-de.html" title="Descargar los prerequisitos de SharePoint 2010 offline" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-QEuloJKL24I/TqY9iMSTsII/AAAAAAAAAZg/rZkjSU9pJFA/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0cMSHw5eSp7ImA9WhdQFEo.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-5280817274980841198</id><published>2011-08-14T20:11:00.000-07:00</published><updated>2011-08-15T22:04:49.221-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-15T22:04:49.221-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="UPA" /><category scheme="http://www.blogger.com/atom/ns#" term="UPS" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><category scheme="http://www.blogger.com/atom/ns#" term="Configuracion SharePoint 2010; Errores SharePoint" /><title>MOSS MA not found</title><content type="html">&lt;div style="text-align: justify;"&gt;Aprovecho este espacio para dejar constancia de otro de los posibles inconvenientes a los que nos enfrentamos al tratar de desplegar el servicio de profile (UPS – User Profile Service) de manera completa en SharePoint 2010.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-pUar5bvrSN0/Tkn6It8ystI/AAAAAAAAAZc/HQMspi_777s/s1600/img3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="173" src="http://2.bp.blogspot.com/-pUar5bvrSN0/Tkn6It8ystI/AAAAAAAAAZc/HQMspi_777s/s400/img3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
El error: “&lt;strong&gt;MOSS MA not found&lt;/strong&gt;”, algo más que confuso y hasta cierto punto gracioso, obviamente no la primera vez que te enfrentas a él. &lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Cuando aparece: Cuando se está creando o editando la conexión hacia el AD (Directorio Activo), después de hacer click en OK.&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Resolución: Si alguno de los servicios de Forefront están detenidos, entonces primero debes asegurarte que se inicien, yo personalmente recomiendo que no traten de iniciar los servicios manualmente, sino desde el Sitio Central de Administración de SharePoint. Si los servicios de Forefront están ya iniciados, pues…. entonces reinícienlos :), esto debería permitirles editar o crear su conexión sin que se vuelva a presentar el error.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-7eBuzr7wjho/TkiNPuK3UMI/AAAAAAAAAZU/OgJTkuOpEmA/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="37" src="http://4.bp.blogspot.com/-7eBuzr7wjho/TkiNPuK3UMI/AAAAAAAAAZU/OgJTkuOpEmA/s640/img1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-OmvRwEMfhrM/TkiNQbCUD4I/AAAAAAAAAZY/_g3nagXskao/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-OmvRwEMfhrM/TkiNQbCUD4I/AAAAAAAAAZY/_g3nagXskao/s1600/img2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-5280817274980841198?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/5280817274980841198/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=5280817274980841198&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/5280817274980841198?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/5280817274980841198?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/08/moss-ma-not-found.html" title="MOSS MA not found" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-pUar5bvrSN0/Tkn6It8ystI/AAAAAAAAAZc/HQMspi_777s/s72-c/img3.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUEERHY7fip7ImA9WhdRGEs.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-7794437754277547759</id><published>2011-08-08T21:16:00.000-07:00</published><updated>2011-08-08T21:20:05.806-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-08T21:20:05.806-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="UPA" /><category scheme="http://www.blogger.com/atom/ns#" term="UPS" /><category scheme="http://www.blogger.com/atom/ns#" term="Configuracion SharePoint 2010; SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Errores SharePoint" /><title>Unable to connect to the Synchronization Service</title><content type="html">&lt;div style="text-align: justify;"&gt;Si ustedes como yo, son uno más de los desafortunados a los que les ha tocado pagar todos los pecados de sus vidas anteriores, con el servicio de &lt;strong&gt;User Profile Synchronization&lt;/strong&gt; que esta a nuestra disposición en SharePoint 2010. Tal vez ya se hayan encontrado con varios de esos "comunes", y&amp;nbsp;hasta cierto punto aceptados,&amp;nbsp;&amp;nbsp;errores de configuración. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
El día de hoy quiero dejar precedente de uno de los últimos&lt;span lang="ES-MX" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%; mso-ansi-language: ES-MX; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"&gt; &lt;/span&gt;con los que he tenido que lidiar. El mensaje de error es el mismo que intitula este post y se presenta al intentar abrir la herramienta que acompaña al servicio de sincronización, me refiero al FIM Client (Forefront Identity Manager), el cual se encuentra usualmente en la siguiente ruta: &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
%programfiles%\Microsoft Office Server\14.0\Synchronization Service\UIShell\miisclient.exe&lt;/div&gt;&lt;br /&gt;
Y el cual nos ayuda a rastrear que hace &lt;strike&gt;y la mayoria del tiempo los errores que se presentan&lt;/strike&gt; en este servicio.&lt;br /&gt;
&lt;blockquote&gt;&lt;div style="text-align: center;"&gt;Unable to connect to the Synchronization Service&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-eMY4_IXRkl0/TkCrmeyAtAI/AAAAAAAAAZQ/sQXEr7lq0sw/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-eMY4_IXRkl0/TkCrmeyAtAI/AAAAAAAAAZQ/sQXEr7lq0sw/s1600/img1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Como siempre, mi primera recomendación es que respiren profundo.&lt;br /&gt;
&lt;br /&gt;
Como en pocas ocasiones, el mensaje de error que se muestra es perfectamente claro y muy conciso.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Revisen si el servicio esta ejecutándose en el servidor desde el cual están intentando acceder al FIM Client, si el servicio no esta iniciado, es imposible abrir el FIM Client.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style="text-align: justify;"&gt;Revisen si el usuario con el que se está ejecutando este utilería pertenece al grupo de FIMSyncAdmins, el cual se crea cuando se provisiona el servicio de sincronización y al cual, en teoría, el usuario con el cual se ejecuta el servicio es agregado automáticamente.&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Si estas dos sugerencias ya las han revisado y asegurado que se cumplen, es posible que estén en el mismo escenario que el mío, y es que, acabando recién de provisionar el servicio de sincronización UPS (User Profile Synchronization), cuando me disponía a utilizar el FIM client,&amp;nbsp;para mi sorpresa apareció este error .&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;La raíz y solución del contratiempo&lt;/strong&gt;: como bien mencioné, al provisionar el servicio, este asigna los permisos y roles necesarios a la cuenta de servicio, entre ellos, se asigna al grupo FIMSyncAdmins. Solo que para que estos permisos sean efectivos es necesario efectuar un logoff y posteriormente un logon. Eso es todo!&lt;br /&gt;
&lt;br /&gt;
Happy configuring!&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-7794437754277547759?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/7794437754277547759/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=7794437754277547759&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/7794437754277547759?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/7794437754277547759?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/08/unable-to-connect-to-synchronization.html" title="Unable to connect to the Synchronization Service" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-eMY4_IXRkl0/TkCrmeyAtAI/AAAAAAAAAZQ/sQXEr7lq0sw/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUQCQ3Y8fyp7ImA9WhdREks.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-6000261741922417554</id><published>2011-07-28T21:20:00.000-07:00</published><updated>2011-08-01T22:36:02.877-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-01T22:36:02.877-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Templates" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Fast Search Server 2010 For SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="FS4SP" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><title>Fast Search Center Template is Missing in SharePoint 2010</title><content type="html">&lt;div style="text-align: justify;"&gt;Les ha ocurrido que ya después de haber pasado penurias en desplegar Fast Search Server 2010 for SharePoint (FS4SP), configurar los services search applications (SSA) necesarios, y habilitar su comunicación por medio de la importación/exportación de certificados para que SharePoint se comunique con FS4SP… que después de todo este trabajo, vayan &lt;strike&gt;ilusos&lt;/strike&gt; confiados a su Sitio Web a crear un nuevo sitio que utilice el template de Fast Search Center para proveer a los usuarios de la capacidad de búsquedas empresariales y que al intentar seleccionar este template del apartado de Search, este template no aparezca!? &lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ua2PLytHcVk/Tjd1uoC-50I/AAAAAAAAAZA/hPhyhhoLi0Y/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="235" src="http://2.bp.blogspot.com/-Ua2PLytHcVk/Tjd1uoC-50I/AAAAAAAAAZA/hPhyhhoLi0Y/s400/img1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Evidentemente, lo primero que se nos cruza por la mente es validar que las dos características a nivel de sitecollection requeridas estén activadas…. Y si, si están activadas&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-a6Hq8RuUvKg/Tjd14uEoaNI/AAAAAAAAAZE/bbvh5IFdnJU/s1600/img3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="49" src="http://1.bp.blogspot.com/-a6Hq8RuUvKg/Tjd14uEoaNI/AAAAAAAAAZE/bbvh5IFdnJU/s640/img3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Ok, después de esta sucia broma del destino, lo que necesitamos hacer para que este template aparezca como opción al momento de crear un nuevo sitio es activar la característica de &lt;strong&gt;SearchExtensions&lt;/strong&gt;, la cual es de tipo hidden y que pueden activar utilizando el pequeño scritp de powershell que a continuación muestro:&lt;/div&gt;&lt;pre class="brush: powershell"&gt;Enable-SPFeature –Id SearchExtensions –url http://sp2010/
&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xj2bXW5JGMg/Tjd2J-JfBiI/AAAAAAAAAZI/LyiKuFnfxyk/s1600/img4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="106" src="http://3.bp.blogspot.com/-xj2bXW5JGMg/Tjd2J-JfBiI/AAAAAAAAAZI/LyiKuFnfxyk/s400/img4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-v3TCrz9oaLY/Tjd2TDi__CI/AAAAAAAAAZM/Fi6LtiYFiaQ/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="236" src="http://1.bp.blogspot.com/-v3TCrz9oaLY/Tjd2TDi__CI/AAAAAAAAAZM/Fi6LtiYFiaQ/s400/img2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-6000261741922417554?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/6000261741922417554/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=6000261741922417554&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/6000261741922417554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/6000261741922417554?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/08/fast-search-center-template-is-missing.html" title="Fast Search Center Template is Missing in SharePoint 2010" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Ua2PLytHcVk/Tjd1uoC-50I/AAAAAAAAAZA/hPhyhhoLi0Y/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C08ERXw7eyp7ImA9WhZUFUo.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-8415394693275571085</id><published>2011-06-08T15:20:00.000-07:00</published><updated>2011-06-08T15:23:24.203-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-08T15:23:24.203-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tip" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title>[Tip] Agregar automáticamente los cmdlets de SharePoint a PowerShell ISE</title><content type="html">&lt;div style="text-align: justify;"&gt;Si a ustedes como a mi, les gusta usar Windows PowerShell ISE a la hora de escribir scripts PowerShell, principalmente,&amp;nbsp; aunque no únicamente, para SharePoint Server 2010, les mostraré un tip para evitar el uso del comando &lt;a href="http://technet.microsoft.com/en-us/library/dd347601.aspx" target="new"&gt;Add-PSSnapin&lt;/a&gt; para registrar los cmdlets de SharePoint cada vez que abrimos esta aplicación.&lt;/div&gt;&lt;br /&gt;
Antes que nada, si ustedes aún no usan Windows PowerShell ISE, lo recomiendo ampliamente por sus características de Debugging, si aún no lo usan porque no lo tienen activado, recuerden que Windows PowerShell ISE es instalado en Windows 2008/R2 por default, solo que no es activado, y esto se logra mediante la activación de la característica “Windows PowerShell Integrated Scripting Environment (ISE)”.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-EGA_GmtTdbI/Te_ny-oZK9I/AAAAAAAAAYw/Zzl7regxFE0/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="new"&gt;&lt;img border="0" height="292" src="http://4.bp.blogspot.com/-EGA_GmtTdbI/Te_ny-oZK9I/AAAAAAAAAYw/Zzl7regxFE0/s400/img1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Una vez que ya lo han activado e iniciado, se darán cuenta que si intentan usar algún cmdlet de SharePoint, este no funciona y es porque no ha sido registrado el paquete de cmdlets de SharePoint, para esto usamos el cmdlet Add-PSSnapin Microsoft.SharePoint.PowerShell, ahora bien, volviendo a la intención original de este post, que es evitar escribir este comando cada vez que abrimos el Windows PowerShell ISE, podemos editar ó crear (en caso de no existir) una archivo de perfil de usuario, con el fin de que cada vez que abramos esta aplicación, este archivo de perfil de usuario se encargue de cargar todos los paquetes de cmdlets que hayamos indicado.&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Existen cuatro diferentes ámbitos de perfiles en los cuales se puede crear este archivo, para mayor información revisen este &lt;a href="http://msdn.microsoft.com/en-us/library/bb613488(v=vs.85).aspx" target="new"&gt;link de technet&lt;/a&gt;, yo personalmente recomiendo que usen el que aplica a todos los usuarios y todos los shells, con esto se evitaran repetir esta acción entre diferentes usuarios y diferentes consolas de Shell, este archivo lo pueden referenciar a través de $profile.AllUsersAllHosts. A continuación los pasos que pueden usar para crear este archivo y agregar los paquetes de cmdlets que deben cargarse cada que se lanza la aplicación, en este ejemplo solo agrego el de SharePoint 2010.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
Primero se debe abrir el archivo de perfil (profile.ps1) si existe de lo contrario crearlo, para esto se puede abrir directamente desde el file system o mediante un comando de PowerShell como se observa a continuación:&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-nBLOiEU96kA/Te_ogJB3GYI/AAAAAAAAAY0/DPYpYi_G6Rs/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="new"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-nBLOiEU96kA/Te_ogJB3GYI/AAAAAAAAAY0/DPYpYi_G6Rs/s400/img2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;if (!(test-path $profile.AllUsersAllHosts))
{
    new-item -type file -path $profile.AllUsersAllHosts-force
}
&lt;/pre&gt;&lt;br /&gt;
Una vez que el archivo está abierto solo se debe agregar el siguiente código:&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;#se edita el archivo de perfil
psEdit $profile.AllUsersAllHosts
If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )
{ 
    Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell 
    #agregue aqui sus modulos favoritos!
}
&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1NiQeCjlp-8/Te_yt3PHPwI/AAAAAAAAAY8/CYDeLi3sF7I/s1600/img3.png" imageanchor="1" target="new"&gt;&lt;img border="0" height="167" src="http://4.bp.blogspot.com/-1NiQeCjlp-8/Te_yt3PHPwI/AAAAAAAAAY8/CYDeLi3sF7I/s640/img3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Después guardar el archivo y listo, la siguiente vez que se lance la aplicación automáticamente se cargarán los módulos indicados.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Happy Coding!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-8415394693275571085?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/8415394693275571085/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=8415394693275571085&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/8415394693275571085?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/8415394693275571085?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/06/tip-agregar-automaticamente-los-cmdlets.html" title="[Tip] Agregar automáticamente los cmdlets de SharePoint a PowerShell ISE" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-EGA_GmtTdbI/Te_ny-oZK9I/AAAAAAAAAYw/Zzl7regxFE0/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEQEQXc-eCp7ImA9WhZVF0U.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-8842048306351179976</id><published>2011-05-30T11:58:00.000-07:00</published><updated>2011-05-30T12:05:00.950-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-30T12:05:00.950-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Visio Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><title>[Tip] Convertir un Diagrama de Visio a un archivo .xap de Silverlight</title><content type="html">&lt;div style="text-align: justify;"&gt;Algunos lectores del blog me han comentado que aunque les parecen muy atractivos los resultados que se pueden obtener al personalizar un diagrama utilizando JavaScript, también me comentan que les parece muy complicado estar "buscando" objetos en el DOM, una vez que el diagrama ha sido dibujado.&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Me explico, una vez que el diagrama ha sido rendereado, es entonces cuando podemos comenzar a interactuar con él, en términos de manipular los objetos (Silverlight principalmente), para esta manipulación casi siempre necesitamos saber el ID del control, para posteriormente modificar alguna de sus propiedades, inclusive para removerlo del diagrama. Importante es mencionar que estos ID's se autogeneran cuando el diagrama es transformado a .xap, por lo que no tenemos certeza de cuál es el nombre una vez generado. &lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Es entonces este proceso de "búsqueda" de ID's de los controles a modificar el que se vuelve un poco tedioso, luego entonces, el motivo de este post es mostrarles un &lt;strike&gt;workaround&lt;/strike&gt; proceso alternativo con el que podemos tener acceso al archivo .XAP de un diagrama de Visio, lo cual nos permitirá ver la jerarquía de controles, sus respectivos ID's e inclusive los datos que son enviados al cliente (de esto hablaremos en un post siguiente).&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Y lo único que tenemos que hacer es guardar el diagrama como página web y una vez que concluya el asistente, abrir la carpeta de archivos que genera y examinar los archivos .xaml que se encuentran dentro, puede haber tantos archivos .xaml como paginas tenga el diagrama, en mi ejemplo el diagrama contiene tres paginas.&lt;/div&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href="http://4.bp.blogspot.com/-3zPcNoVSWVY/TeOnZuJomEI/AAAAAAAAAYU/dkCNRZsQskY/s1600/img1.png" imageanchor="1" target="new"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-3zPcNoVSWVY/TeOnZuJomEI/AAAAAAAAAYU/dkCNRZsQskY/s320/img1.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://4.bp.blogspot.com/-XFomnA-Ky9Y/TeOnrdWMMsI/AAAAAAAAAYk/qjUDmuM89Cw/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="new"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-XFomnA-Ky9Y/TeOnrdWMMsI/AAAAAAAAAYk/qjUDmuM89Cw/s320/img2.png" t8="true" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href="http://3.bp.blogspot.com/-QwBQGcz3CpA/TeOnsMsFYDI/AAAAAAAAAYo/TTZoXbGBmvo/s1600/img3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="new"&gt;&lt;img border="0" height="204" src="http://3.bp.blogspot.com/-QwBQGcz3CpA/TeOnsMsFYDI/AAAAAAAAAYo/TTZoXbGBmvo/s320/img3.png" t8="true" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-QDDLQrVeMXg/TeOntvMhrPI/AAAAAAAAAYs/DFmuzisTSc4/s1600/img4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="new"&gt;&lt;img border="0" height="199" src="http://4.bp.blogspot.com/-QDDLQrVeMXg/TeOntvMhrPI/AAAAAAAAAYs/DFmuzisTSc4/s320/img4.png" t8="true" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Happy Coding!&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-8842048306351179976?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/8842048306351179976/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=8842048306351179976&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/8842048306351179976?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/8842048306351179976?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/05/tip-convertir-un-diagrama-de-visio-un.html" title="[Tip] Convertir un Diagrama de Visio a un archivo .xap de Silverlight" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-3zPcNoVSWVY/TeOnZuJomEI/AAAAAAAAAYU/dkCNRZsQskY/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUMAQnY8eyp7ImA9WhZVFEw.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-6760191706486368282</id><published>2011-05-26T05:37:00.000-07:00</published><updated>2011-05-26T05:37:23.873-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-26T05:37:23.873-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Visio Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="Eventos SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Comunidad SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><title>Reseña Cuarto Simposio Latinoamericano de SharePoint 2011</title><content type="html">&lt;div style="text-align: justify;"&gt;Como muchos de ustedes saben, tuve el privilegio de ser invitado a participar como expositor con una charla en el pasado Cuarto Simposio Latinoamericano de SharePoint 2011, que se llevo acabo el 29 de Abril pasado en las instalaciones de Microsoft México.&amp;nbsp; En aquella ocasión, mi participación fue acerca de Visio Services en SharePoint 2010.&lt;/div&gt;&lt;br /&gt;
Dejo el link de la &lt;a href="http://sharepoint.com.mx/2011/05/23/cuarto-simposio-latinoamericano-de-sharepoint-2010-en-mexico.aspx"&gt;reseña oficial del evento&lt;/a&gt;, desde el &lt;a href="http://sharepoint.com.mx/"&gt;sitio de la comunidad SharePoint de México&lt;/a&gt;.&lt;br /&gt;
También una &lt;a href="http://msmvps.com/blogs/haarongonzalez/archive/2011/05/10/rese-241-a-del-cuarto-simposio-latinoamericano-de-sharepoint-2011-en-m-233-xico.aspx"&gt;reseña&lt;/a&gt; &lt;strike&gt;apócrifa &lt;/strike&gt;realizada por mi buen amigo &lt;a href="http://msmvps.com/blogs/haarongonzalez/default.aspx"&gt;Haaron Gonzalez&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SiT7snoZAJ0/Td5HrwrCHZI/AAAAAAAAAYM/Gi7xRfLUFvc/s1600/0486.04292011112_3D8B58CB.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-SiT7snoZAJ0/Td5HrwrCHZI/AAAAAAAAAYM/Gi7xRfLUFvc/s320/0486.04292011112_3D8B58CB.jpg" t8="true" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6i6U3O2gwmc/Td5H8OqyMzI/AAAAAAAAAYQ/taQ5zR2mnz0/s1600/WP000657.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-6i6U3O2gwmc/Td5H8OqyMzI/AAAAAAAAAYQ/taQ5zR2mnz0/s320/WP000657.jpg" t8="true" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;﻿&lt;/div&gt;&lt;br /&gt;
La presentación la pueden descargar de &lt;a href="http://sharepoint.com.mx/files/5/0/2/2/7/182771-172205/2_VisioServicesYOffice2010ConSharePoint2010.zip"&gt;aquí&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Solo queda volver a agradecer a Luis Du Solier por la invitación y confianza.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-6760191706486368282?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/6760191706486368282/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=6760191706486368282&amp;isPopup=true" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/6760191706486368282?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/6760191706486368282?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/05/resena-cuarto-simposio-latinoamericano.html" title="Reseña Cuarto Simposio Latinoamericano de SharePoint 2011" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-SiT7snoZAJ0/Td5HrwrCHZI/AAAAAAAAAYM/Gi7xRfLUFvc/s72-c/0486.04292011112_3D8B58CB.jpg" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CE4GRnw9fip7ImA9WhZVEU8.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-1272507025502364926</id><published>2011-05-22T20:13:00.000-07:00</published><updated>2011-05-22T20:55:27.266-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-22T20:55:27.266-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Visio Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><title>Agregando controles Silverlight a un diagrama de Visio Services</title><content type="html">&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/-g18lzazt1WA/TdnEPple9NI/AAAAAAAAAX8/Zs8kU0BW0bA/s1600/mss_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="new"&gt;&lt;br /&gt;
&lt;img border="0" height="80" src="http://3.bp.blogspot.com/-g18lzazt1WA/TdnEPple9NI/AAAAAAAAAX8/Zs8kU0BW0bA/s200/mss_logo.png" width="200" /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;
&lt;a href="http://2.bp.blogspot.com/-qRaMLMWDlOw/TdnEREuaZ_I/AAAAAAAAAYA/pv3keNEWBwE/s1600/Silverlight_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="new"&gt;&lt;br /&gt;
&lt;img border="0" height="65" src="http://2.bp.blogspot.com/-qRaMLMWDlOw/TdnEREuaZ_I/AAAAAAAAAYA/pv3keNEWBwE/s200/Silverlight_logo.png" width="200" /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/-xvLQI8aXRyc/TdnERlGZq2I/AAAAAAAAAYE/qQ9WwL7W-yQ/s1600/visio_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="new"&gt;&lt;br /&gt;
&lt;img border="0" height="66" src="http://3.bp.blogspot.com/-xvLQI8aXRyc/TdnERlGZq2I/AAAAAAAAAYE/qQ9WwL7W-yQ/s200/visio_logo.png" width="200" /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Hasta el momento he omitido intencionalmente el mencionar uno de los hechos mas relevantes, y que tiene  que ver con la forma en que el diagrama es dibujado (rendereado) en el navegador.&lt;br /&gt;
&lt;br /&gt;
Existen dos únicas formas en las que el diagrama de Visio puede ser dibujado en el navegador, en &lt;a href="http://en.wikipedia.org/wiki/Raster_graphics" target="new"&gt;formato Raster&lt;/a&gt; ó usando &lt;a href="http://www.silverlight.net/" target="new"&gt;Silverlight&lt;/a&gt;!!!.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Así es, una de las tecnologías favoritas de este humilde desarrollador, vuelve a hacerse presente en un escenario en el que la interacción del usuario con el navegador es parte fundamental de la experiencia final de uso. Ahora bien, habrá quienes en este punto aún no tengan claro el porqué de mi exaltación por el uso de Silverlight para renderear el diagrama de Visio, es decir, si, todos ya sabíamos que Silverlight es usando ampliamente en varios aspectos de SharePoint 2010 porque esto brinda, sin lugar a dudas, una experiencia de usuario mejorada. Pero… volviendo a Visio Services… y qué más da que se use Silverlight para dibujar el diagrama en el navegador?&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Pues el hecho relevante es, como todos sabemos, que &lt;a href="http://msdn.microsoft.com/en-us/library/cc903928(v=vs.95).aspx" target="new"&gt;Silverlight expone una API en JavaScript&lt;/a&gt; para la manipulación y creación de objetos desde el lado del cliente (JavaScript), puede sonar redundante puesto que Silverlight de por sí se ejecuta del lado del cliente (navegador). Ahora sí, las piezas comienzan a encajar en este rompecabezas. &lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;La razón de este post es demostrar cómo podemos, mediante el uso de la API de Silverlight en JavaScript, agregar objetos al diagrama, una vez que ha sido dibujado en el navegador. Este es el punto medular, ya que con un poco de imaginación y algunas líneas de código (en su mayoría JavaScript) podemos crear diagramas muy atractivos al usuario final. &lt;/div&gt;&lt;br /&gt;
Dado que ha sido demasiado preámbulo, nada mejor que algunas líneas de código que ejemplifiquen mucho mejor de que estamos hablando.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Agregando objetos Silverlight(xaml) al diagrama&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Tomando como base el &lt;a href="http://gerardo-reyes.blogspot.com/2011/05/visio-services-api.html" target="new"&gt;diagrama del post anterior&lt;/a&gt;, vamos a modificar un poco el código que utilizamos para contar los shapes que existen dentro del diagrama para agregar los objetos Silverlight.&lt;/div&gt;&lt;br /&gt;
&lt;div style="height: 350px; overflow: scroll;"&gt;&lt;pre class="brush: plain; highlight:[32,48,49]"&gt;Sys.Application.add_load(onApplicationLoad)

//declaramos algunas variables globales que ocuparemos
var vwaControl;
var vwaPage;
var vwaShapes;
var vwaShapeCount;


function onApplicationLoad() {
    //obtenemos la instancia de la Visio Web Access Web Part
    getVwaControl();

    //Nos subscribimos a dos de los eventos que son expuesto por la API
    if (vwaControl != null) {
        vwaControl.addHandler("diagramcomplete", onDiagramComplete);
        vwaControl.addHandler("shapeselectionchanged", onShapeSelectionChanged);           
    }
    else {
        alert("Error connecting to Visio Web Part.  Please contact the site administrator.");
    }
}

function onDiagramComplete() {
 vwaPage = vwaControl.getActivePage();
    //obtenemos la pagina activa con el metodo getActivePage()
    vwaPage.setZoom(80);
 
 //buscamos el contenedor del diagrama, casi siempre un objeto &lt;canvas&gt;
 var visioSilverlightID = findVwaRenderingObject();
    var visioSLObject = document.getElementById(visioSilverlightID);
    var canvaselement = visioSLObject.content.findName("Workspace");
 
 try
 {
 //agregamos un objeto &lt;stackpanel&gt;
 var xaml = "&lt;stackpanel background="\&amp;quot;Green\&amp;quot;" height="\&amp;quot;300\&amp;quot;" width="\&amp;quot;400\&amp;quot;" x:name="\&amp;quot;canvasTest1\&amp;quot;" xmlns:controls="\&amp;quot;clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls\&amp;quot;" xmlns:d="\&amp;quot;http://schemas.microsoft.com/expression/blend/2008\&amp;quot;" xmlns:mc="\&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006\&amp;quot;" xmlns:x="\&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml\&amp;quot;" xmlns="\&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation\&amp;quot;"&gt;";
 //agregamos un objeto &lt;textbox&gt;
 xaml+="&lt;textbox width="\&amp;quot;100\&amp;quot;" x:name="\&amp;quot;txt1\&amp;quot;"&gt;";
 //agregamos un objeto &lt;textblock&gt;
 xaml+="&lt;textblock cualquiera\?="" es="" text="\&amp;quot;Este" texto="" un="" width="\&amp;quot;300\&amp;quot;" x:name="\&amp;quot;txt2\&amp;quot;"&gt; " ;
 //agregamos un objeto &lt;rectangle&gt;
 xaml+="&lt;rectangle fill="\&amp;quot;Blue\&amp;quot;" height="\&amp;quot;50\&amp;quot;" width="\&amp;quot;200\&amp;quot;" x:name="\&amp;quot;rect1\&amp;quot;"&gt;";
 //agregamos un objeto &lt;ellipse&gt;
 xaml+="&lt;ellipse fill="\&amp;quot;Azure\&amp;quot;" height="\&amp;quot;50\&amp;quot;" width="\&amp;quot;200\&amp;quot;" x:name="\&amp;quot;ellipse1\&amp;quot;"&gt;";
 xaml+="&lt;canvas 0,0\?="" 0,0l="" 0,72l="" 72,0l="" 72,72l="" clip="\&amp;quot;F1" height="\&amp;quot;72\&amp;quot;" m="" width="\&amp;quot;72\&amp;quot;" xmlns:x="\&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml\&amp;quot;" xmlns="\&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation\&amp;quot;"&gt;&lt;canvas canvas.left="\&amp;quot;0\&amp;quot;" canvas.top="\&amp;quot;0\&amp;quot;" height="\&amp;quot;72\&amp;quot;" width="\&amp;quot;72\&amp;quot;"&gt;&lt;path 11.3671,40.0213="" 11.3671,51.1631c="" 11.3671,62.3021="" 22.2986,30.99="" 22.2986,71.3348="" 35.782,30.99c="" 35.782,71.3348c="" 49.2679,30.99="" 49.2679,71.3348="" 60.1976,40.0213="" 60.1976,51.1631="" 60.1976,51.1631c="" 60.1976,62.3021="" \?="" canvas.left="\&amp;quot;11.3671\&amp;quot;" canvas.top="\&amp;quot;30.99\&amp;quot;" data="\&amp;quot;F1" height="\&amp;quot;40.3447\&amp;quot;" m="" stretch="\&amp;quot;Fill\&amp;quot;" width="\&amp;quot;48.8305\&amp;quot;" z=""&gt;&lt;path.fill&gt;&lt;lineargradientbrush endpoint="\&amp;quot;0.995287,-0.165073\&amp;quot;" startpoint="\&amp;quot;-0.31031,-0.165073\&amp;quot;"&gt;&lt;lineargradientbrush.relativetransform&gt;&lt;transformgroup&gt;&lt;skewtransform anglex="\&amp;quot;14.8387\&amp;quot;" angley="\&amp;quot;0\&amp;quot;/" centerx="\&amp;quot;-0.31031\&amp;quot;" centery="\&amp;quot;-0.165073\&amp;quot;"&gt;&lt;rotatetransform angle="\&amp;quot;39.3775\&amp;quot;/" centerx="\&amp;quot;-0.31031\&amp;quot;" centery="\&amp;quot;-0.165073\&amp;quot;"&gt;&lt;/rotatetransform&gt;&lt;/skewtransform&gt;&lt;/transformgroup&gt;&lt;/lineargradientbrush.relativetransform&gt;&lt;lineargradientbrush.gradientstops&gt;&lt;gradientstop color="\&amp;quot;#FFA1BFDB\&amp;quot;" offset="\&amp;quot;0\&amp;quot;/"&gt;&lt;gradientstop color="\&amp;quot;#FFA1BFDB\&amp;quot;" offset="\&amp;quot;0.260002\&amp;quot;/"&gt;&lt;gradientstop color="\&amp;quot;#FF5588BC\&amp;quot;" offset="\&amp;quot;0.859611\&amp;quot;/"&gt;&lt;gradientstop color="\&amp;quot;#FF0A529E\&amp;quot;" offset="\&amp;quot;1\&amp;quot;/"&gt;&lt;/gradientstop&gt;&lt;/gradientstop&gt;&lt;/gradientstop&gt;&lt;/gradientstop&gt;&lt;/lineargradientbrush.gradientstops&gt;&lt;/lineargradientbrush&gt;&lt;/path.fill&gt;&lt;/path&gt;&lt;path 10.7666,39.672="" 10.7666,51.1631="" 10.7666,51.1631c="" 10.7666,62.6534="" 11.9688,40.4072="" 11.9688,51.1631="" 11.9688,51.1631c="" 11.9688,61.9176="" 21.989,30.3234="" 21.989,72="" 22.6507,31.656="" 22.6507,70.6695="" 35.782,30.3234c="" 35.782,31.656c="" 35.782,70.6695c="" 35.782,72c="" 48.9121,31.656="" 48.9121,70.6695="" 49.5771,30.3234="" 49.5771,72="" 59.5976,40.4072="" 59.5976,51.1631c="" 59.5976,61.9176="" 60.7999,39.672="" 60.7999,51.1631c="" 60.7999,62.6534="" \?="" canvas.left="\&amp;quot;10.7666\&amp;quot;" canvas.top="\&amp;quot;30.3234\&amp;quot;" data="\&amp;quot;F1" fill="\&amp;quot;#FF293787\&amp;quot;" height="\&amp;quot;41.6766\&amp;quot;" m="" stretch="\&amp;quot;Fill\&amp;quot;" width="\&amp;quot;50.0333\&amp;quot;" z=""&gt;&lt;path 23.1363,34.2858l="" 23.1363,34.5375="" 23.1363,34.5375c="" 23.4734,28.5573="" 36.5136,50.1037="" 39.8869,69.7775="" 39.8869,69.7775c="" 43.8212,27.6859="" 44.3839,32.7935c="" 44.9445,37.8983="" \?="" canvas.left="\&amp;quot;23.1363\&amp;quot;" canvas.top="\&amp;quot;29.428\&amp;quot;" data="\&amp;quot;F1" fill="\&amp;quot;#FFFFFFFF\&amp;quot;" height="\&amp;quot;40.3495\&amp;quot;" m="" stretch="\&amp;quot;Fill\&amp;quot;" width="\&amp;quot;21.2909\&amp;quot;" z=""&gt;&lt;path 22.5346,34.5375c="" 22.5346,34.7076="" 22.5358,34.243l="" 22.5945,34.8722="" 22.6994,34.9967c="" 22.7431,30.716="" 22.833,35.1488="" 23.7381,34.2789c="" 23.8767,32.1422="" 25.1913,36.0374="" 28.58,30.2916="" 28.6558,28.957="" 34.4249,28.7765="" 34.4249,28.7765c="" 34.4578,30.109="" 34.4578,30.109c="" 35.8944,49.4357="" 35.9955,50.6569="" 39.0779,28.6333="" 39.2939,69.9033c="" 39.3489,70.2186="" 39.5848,29.9486="" 39.5998,70.4455="" 39.8045,66.3696c="" 39.8907,70.4427c="" 40.1791,70.4413="" 40.4288,70.209="" 40.4782,69.8936c="" 40.686,68.588="" 40.9881,58.6592="" 43.5949,31.1373="" 43.7859,32.8737c="" 43.8146,33.1309="" 43.8261,33.4577="" 43.8261,33.8474c="" 43.8261,39.5483="" 44.6348,29.5766="" 44.9794,32.7119c="" 45.545,37.8567="" \?="" canvas.left="\&amp;quot;22.5346\&amp;quot;" canvas.top="\&amp;quot;28.7626\&amp;quot;" data="\&amp;quot;F1" fill="\&amp;quot;#FF293787\&amp;quot;" height="\&amp;quot;41.6801\&amp;quot;" m="" stretch="\&amp;quot;Fill\&amp;quot;" width="\&amp;quot;22.4906\&amp;quot;" z=""&gt;&lt;path 16.9789,18.4279="" 16.9789,18.4279c="" 16.9789,27.9902="" 16.9789,8.86551="" 23.9803,1.11561="" 23.9803,35.7394="" 32.6084,1.11561c="" 32.6084,35.7394c="" 41.2378,1.11561="" 41.2378,35.7394="" 48.2366,18.4279c="" 48.2366,27.9902="" 48.2366,8.86551="" \?="" canvas.left="\&amp;quot;16.9789\&amp;quot;" canvas.top="\&amp;quot;1.11561\&amp;quot;" data="\&amp;quot;F1" height="\&amp;quot;34.6238\&amp;quot;" m="" stretch="\&amp;quot;Fill\&amp;quot;" width="\&amp;quot;31.2577\&amp;quot;" z=""&gt;&lt;path.fill&gt;&lt;radialgradientbrush center="\&amp;quot;0.1526,0.175344\&amp;quot;" gradientorigin="\&amp;quot;0.1526,0.175344\&amp;quot;" radiusx="\&amp;quot;0.68045\&amp;quot;" radiusy="\&amp;quot;0.680518\&amp;quot;"&gt;&lt;radialgradientbrush.gradientstops&gt;&lt;gradientstop color="\&amp;quot;#FFDEDDDD\&amp;quot;" offset="\&amp;quot;0\&amp;quot;/"&gt;&lt;gradientstop color="\&amp;quot;#FFDEDDDD\&amp;quot;" offset="\&amp;quot;0.260002\&amp;quot;/"&gt;&lt;gradientstop color="\&amp;quot;#FFC0BFC0\&amp;quot;" offset="\&amp;quot;0.859611\&amp;quot;/"&gt;&lt;gradientstop color="\&amp;quot;#FFA3A1A3\&amp;quot;" offset="\&amp;quot;1\&amp;quot;/"&gt;&lt;/gradientstop&gt;&lt;/gradientstop&gt;&lt;/gradientstop&gt;&lt;/gradientstop&gt;&lt;/radialgradientbrush.gradientstops&gt;&lt;radialgradientbrush.relativetransform&gt;&lt;transformgroup&gt;&lt;/transformgroup&gt;&lt;/radialgradientbrush.relativetransform&gt;&lt;/radialgradientbrush&gt;&lt;/path.fill&gt;&lt;/path&gt;&lt;path 16.3784,18.4279="" 16.3784,18.4279c="" 16.3784,28.3415="" 16.3784,8.51422="" 17.5819,18.4279="" 17.5819,18.4279c="" 17.5819,27.6071="" 17.5819,9.24862="" 23.6594,0.449699="" 23.6594,36.4046="" 24.3224,1.78156="" 24.3224,35.0728="" 32.6084,0.449699c="" 32.6084,1.78156c="" 32.6084,35.0728c="" 32.6084,36.4046c="" 40.8957,1.78156="" 40.8957,35.0728="" 41.5584,0.449699="" 41.5584,36.4046="" 47.6374,18.4279c="" 47.6374,27.6071="" 47.6374,9.24862="" 48.8397,18.4279c="" 48.8397,28.3415="" 48.8397,8.51422="" \?="" canvas.left="\&amp;quot;16.3784\&amp;quot;" canvas.top="\&amp;quot;0.449699\&amp;quot;" data="\&amp;quot;F1" fill="\&amp;quot;#FF5F5E5F\&amp;quot;" height="\&amp;quot;35.9549\&amp;quot;" m="" stretch="\&amp;quot;Fill\&amp;quot;" width="\&amp;quot;32.4612\&amp;quot;" z=""&gt;&lt;path 16.708,16.1541c="" 18.1774,7.34002="" 21.5046,14.5263="" 25.0702,0.665451="" 28.3462,19.6422="" 33.3654,0.665451c="" 34.4299,13.6799="" 34.4299,13.6799c="" 38.9219,0.665451="" 39.4462,8.76593="" 43.8333,3.6708="" 44.2441,8.14633="" 46.927,8.29016c="" \?="" canvas.left="\&amp;quot;16.708\&amp;quot;" canvas.top="\&amp;quot;0.665451\&amp;quot;" data="\&amp;quot;F1" height="\&amp;quot;15.9927\&amp;quot;" m="" stretch="\&amp;quot;Fill\&amp;quot;" width="\&amp;quot;30.219\&amp;quot;" z=""&gt;&lt;path.fill&gt;&lt;lineargradientbrush endpoint="\&amp;quot;1.3424,-0.68269\&amp;quot;" startpoint="\&amp;quot;-0.366053,-0.68269\&amp;quot;"&gt;&lt;lineargradientbrush.relativetransform&gt;&lt;transformgroup&gt;&lt;skewtransform anglex="\&amp;quot;37.8788\&amp;quot;" angley="\&amp;quot;0\&amp;quot;/" centerx="\&amp;quot;-0.366053\&amp;quot;" centery="\&amp;quot;-0.68269\&amp;quot;"&gt;&lt;rotatetransform angle="\&amp;quot;57.8004\&amp;quot;/" centerx="\&amp;quot;-0.366053\&amp;quot;" centery="\&amp;quot;-0.68269\&amp;quot;"&gt;&lt;/rotatetransform&gt;&lt;/skewtransform&gt;&lt;/transformgroup&gt;&lt;/lineargradientbrush.relativetransform&gt;&lt;lineargradientbrush.gradientstops&gt;&lt;gradientstop color="\&amp;quot;#FFACBCCF\&amp;quot;" offset="\&amp;quot;0\&amp;quot;/"&gt;&lt;gradientstop color="\&amp;quot;#FFACBCCF\&amp;quot;" offset="\&amp;quot;0.260002\&amp;quot;/"&gt;&lt;gradientstop color="\&amp;quot;#FF8B939D\&amp;quot;" offset="\&amp;quot;0.859611\&amp;quot;/"&gt;&lt;gradientstop color="\&amp;quot;#FF6B6A6B\&amp;quot;" offset="\&amp;quot;1\&amp;quot;/"&gt;&lt;/gradientstop&gt;&lt;/gradientstop&gt;&lt;/gradientstop&gt;&lt;/gradientstop&gt;&lt;/lineargradientbrush.gradientstops&gt;&lt;/lineargradientbrush&gt;&lt;/path.fill&gt;&lt;/path&gt;&lt;path 16.0788,16.262="" 16.1175,16.0338="" 16.1175,16.0338c="" 16.1512,16.4971="" 16.3085,16.6507c="" 16.4658,16.8056="" 16.532,15.5179c="" 16.5907,15.4986="" 16.5932,15.4972="" 16.6531,15.4889="" 16.6568,15.5096="" 16.6843,16.8581="" 16.713,15.4903="" 16.713,15.4903c="" 16.884,16.7903c="" 17.5258,15.37c="" 17.6668,6.74232="" 18.5308,16.2318="" 19.1687,15.0809="" 19.2836,7.19479="" 20.5258,16.5428="" 20.9328,15.2621="" 22.6407,16.8719c="" 22.808,15.5539c="" 24.9216,-7.62939e-006="" 25.7856,1.33208="" 26.4585,17.4666="" 26.5427,16.1348="" 30.4036,16.7364="" 30.7856,18.1416="" 33.3654,-7.62939e-006c="" 33.3654,1.33208="" 33.3654,1.33208c="" 34.0335,13.182c="" 34.8282,14.1805c="" 38.1117,1.33208="" 38.4714,8.83232="" 38.9331,-7.62939e-006="" 39.7708,9.33713="" 42.446,3.66804="" 42.7727,7.7812="" 44.0505,2.87694="" 44.5125,8.82955="" 45.5574,7.63737c="" 46.8985,8.95541c="" 46.9557,7.62563="" 47.1305,8.96924="" 47.349,8.83232="" 47.4106,7.89462c="" 47.4564,8.6055c="" 47.5483,8.10069="" 47.5675,8.37729="" \?="" canvas.left="\&amp;quot;16.1072\&amp;quot;" canvas.top="\&amp;quot;-7.62939e-006\&amp;quot;" data="\&amp;quot;F1" fill="\&amp;quot;#FF5F5E5F\&amp;quot;" height="\&amp;quot;17.3262\&amp;quot;" m="" stretch="\&amp;quot;Fill\&amp;quot;" width="\&amp;quot;31.4212\&amp;quot;" z=""&gt;&lt;/path&gt;&lt;/path&gt;&lt;/path&gt;&lt;/path&gt;&lt;/path&gt;&lt;/canvas&gt;&lt;/canvas&gt;";

 xaml+="&lt;/ellipse&gt;&lt;/ellipse&gt;&lt;/rectangle&gt;&lt;/rectangle&gt;&lt;/textblock&gt;&lt;/textblock&gt;&lt;/textbox&gt;&lt;/textbox&gt;&lt;/stackpanel&gt;";
    var newControls  = visioSLObject.content.CreateFromXaml(xaml,true);
    canvaselement.Children.Add(newControls);
 }
 catch(ex)
 {
  alert(ex.toString());
  throw ex;
 }
}

function onShapeSelectionChanged(source, args){

}
&lt;/stackpanel&gt;&lt;/canvas&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-7IEWmCkyYz0/TdnLWf-5hMI/AAAAAAAAAYI/kKiUJMHu9xE/s1600/ObjetosEnDiagrama1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="new"&gt;&lt;img border="0" height="342" src="http://3.bp.blogspot.com/-7IEWmCkyYz0/TdnLWf-5hMI/AAAAAAAAAYI/kKiUJMHu9xE/s640/ObjetosEnDiagrama1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En realidad el código es muy simple, sin mebargo es importante hacer mención aparte de la función que se encarga de crear los controles Silverlight a partir del código XAML, la &lt;a href="http://msdn.microsoft.com/en-us/library/bb980072(v=vs.95).aspx" target="new"&gt;función createFromXaml&lt;/a&gt;, acto seguido solo basta agregarlos al contenedor del diagrama (un objeto Canvas).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
Es importante tambien mencionar que no todos los controles Silverlight se pueden crear a partir de esta API (aunque si se pueden manipular, si ya existen). &lt;a href="http://msdn.microsoft.com/es-es/library/bb980170(v=VS.95).aspx" target="new"&gt;Aquí puedes checar que objetos se pueden crear y cuales no&lt;/a&gt;, a través de la API de Silverlight en JavaScript.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;Por último algunas referencias y el código js &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/cc903928(v=vs.95).aspx" target="new"&gt;JavaScript API for Silverlight&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/es-es/library/bb980170(v=VS.95).aspx"&gt;Objetos Silverlight expuesto por la API en JavaScript&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://gerardo-reyes.blogspot.com/2011/05/visio-services-api.html" target="new"&gt;Visio Services API&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/bb980072(v=vs.95).aspx" target="new"&gt;Función createFromXaml&lt;/a&gt;  &lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-102ea40b907accfb.office.live.com/embedicon.aspx/Blog/jsCodeAPIDemo2.rar" style="background-color: #fcfcfc; height: 115px; padding: 0px; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Happy Coding!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-1272507025502364926?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/1272507025502364926/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=1272507025502364926&amp;isPopup=true" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/1272507025502364926?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/1272507025502364926?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/05/agregando-controles-silverlight-un.html" title="Agregando controles Silverlight a un diagrama de Visio Services" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-g18lzazt1WA/TdnEPple9NI/AAAAAAAAAX8/Zs8kU0BW0bA/s72-c/mss_logo.png" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DkUBQXc8eyp7ImA9WhZWE08.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-1490680655628214963</id><published>2011-05-13T14:59:00.000-07:00</published><updated>2011-05-13T15:04:10.973-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-13T15:04:10.973-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Visio Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><title>Visio Services API</title><content type="html">&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ok, antes de comenzar a hablar acerca de la API (Application Programming Interface) expuesta para Visio Services, es importante mencionar que no es estrictamente necesario desarrollar utilizando esta API, existen muchas formas de lograr diagramas ricos visualmente (con sus restricciones) &lt;a href="http://blogs.msdn.com/b/visio/archive/2010/02/05/no-code-mashups-with-visio-services-and-web-part-connections.aspx"&gt;sin necesidad de desarrollo alguno&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sin embargo, si requerimos de más &lt;strike&gt;poooder&lt;/strike&gt; flexibilidad en la creación de diagramas con una mejor experiencia de usuario, la API de Visio Services es la &lt;strike&gt;única&lt;/strike&gt; mejor opción. De ahí que para esta serie de posts, me haya inclinado más por el uso, explicación y demostración del uso de esta API. &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;¿Qué es la API de Visio Services?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;De manera resumida, la API de Visio Services es un conjunto de clases (solo cuatro), que nos permiten accesar, manipular e inclusive crear objetos dentro de un diagrama que ha sido rendereado utilizando el service application de Visio Graphics Service, a través de la Visio Web Access Web Part. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Punto modular de este tema es el hecho de que la API es expuesta en JavaScript, es decir que, para hacer uso de la misma es necesario escribir código JavaScript. Una de las preguntas más frecuentes es: &lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;¿Por qué en JavaScript?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;JavaScript fue elegido porque es el mínimo común denominador para todos los navegadores, si, incluyendo Internet Explorer. La versión soportada de JavaScript es la 1.3.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Desde el punto de vista de un desarrollador, creo que, fue una buena elección ya que JavaScript es ampliamente usado y aceptado además de que actualmente existen varios frameworks (como &lt;a href="http://jquery.com/"&gt;jquery&lt;/a&gt;) los cuales hacen que las tareas, que en el pasado eran verdaderos retos, ahora las puedes realizar con una sola línea de código (llamando a alguna función de jquery).&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Ahora describiremos brevemente las clases que conforman esta API.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Vwa.VwaControl&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Representa una instancia de la Visio Web Access Webpart, lo que significa que podemos acceder a la alguna de las propiedades de esta webpart desde el lado del cliente. Además provee métodos de mucha utilidad como addHandler, removeHandler y clearHandlers para interactuar con distintos eventos que esta clase expone, algunos de los más interesantes son:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;diagramcomplete. Este evento es lanzado cuando el diagrama termina de cargarse&lt;/li&gt;
&lt;li&gt;shapeselectionchanged. Se lanza cuando se selecciona un objeto del diagrama&lt;/li&gt;
&lt;/ul&gt;&lt;strong&gt;Vwa.Page&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Representa la página del diagrama que actualmente se está visualizando, como sabemos, un diagrama de Visio puede tener una o más páginas, luego entonces este objeto representa la página que se está desplegando en el momento. La forma más fácil de obtener una referencia a una instancia de este objeto es a través del método getActivePage() de la clase Vwa.VwaControl. Inclusive es posible establecer la página activa mediante el método setActivePage()&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Vwa.ShapeCollection&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Representa una colección de formas (shapes) que se encuentran en la página actualmente activa. Es posible obtener la colección entera de shapes que se encuentran en una página a través del método getShapes() de la clase Vwa.Page&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Vwa.Shape&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Y por último esta clase representa un shape (forma) que se encuentra dentro de la página activa. &lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-MzJSw3TZb5c/Tc2UVc_lutI/AAAAAAAAAXw/NxU--8y-D6o/s1600/vwa3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="449" j8="true" src="http://1.bp.blogspot.com/-MzJSw3TZb5c/Tc2UVc_lutI/AAAAAAAAAXw/NxU--8y-D6o/s640/vwa3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Ahora bien, es tiempo de tirar un poco de código para ejemplificar el uso básico de esta API.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Antes que nada, es necesario publicar un diagrama de Visio web (.vwd), &lt;a href="http://office.microsoft.com/en-us/sharepoint-server-help/roadmap-publish-visio-drawings-to-a-sharepoint-site-HA101835144.aspx"&gt;aquí un video&lt;/a&gt; bastante claro de cómo hacerlo. Acto seguido en una webpart page, agregamos la Visio Web Access webpart en la que estableceremos la url del diagrama que publicamos en el paso anterior. &lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gY0jHPo8M94/Tc2U6CGC-DI/AAAAAAAAAX0/1ln0STf_rtA/s1600/Visio+web+access+webpart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" j8="true" src="http://1.bp.blogspot.com/-gY0jHPo8M94/Tc2U6CGC-DI/AAAAAAAAAX0/1ln0STf_rtA/s640/Visio+web+access+webpart.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ahora agregamos una webpart de editor de Contenido la que nos servirá para agregar código JavaScript, evidentemente en lugar de agregar el código JavaScript directamente en esta web part, podríamos referenciar solamente un archivo de .js que se encuentre previamente provisionado en nuestro sitio.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KP2nrh1B3Cw/Tc2VEnkARVI/AAAAAAAAAX4/UkUTPvDLqeo/s1600/ContentEditorWebpart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="340" j8="true" src="http://2.bp.blogspot.com/-KP2nrh1B3Cw/Tc2VEnkARVI/AAAAAAAAAX4/UkUTPvDLqeo/s640/ContentEditorWebpart.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Una vez que hemos hecho lo anterior, ya podemos escribir propiamente nuestros primeros pininos utilizando la API de Visio Services, entonces editamos la webpart de editor de contenido y agregamos el código JavaScript siguiente:&lt;/div&gt;&lt;br /&gt;
&lt;pre class="brush: js"&gt;&lt;script src="/js/VisioHelper.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
Sys.Application.add_load(onApplicationLoad);

//declaramos algunas variables globales que ocuparemos
var vwaControl;
var vwaPage;
var vwaShapes;
var vwaShapeCount;


function onApplicationLoad() {
    //obtenemos la instancia de la Visio Web Access Web Part
    getVwaControl();

    //Nos subscribimos a dos de los eventos que son expuestos por la API
    if (vwaControl != null) {
        vwaControl.addHandler("diagramcomplete", onDiagramComplete);
        vwaControl.addHandler("shapeselectionchanged", onShapeSelectionChanged);           
    }
    else {
        alert("Error connecting to Visio Web Part.  Please contact the site administrator.");
    }
}

function onDiagramComplete() {
    //obtenemos la pagina activa con el metodo getActivePage()
    vwaPage = vwaControl.getActivePage();
 //obtenemos la coleccion de formas con el metodo getShapes()
    vwaShapes = vwaPage.getShapes();
    vwaShapeCount = vwaShapes.getCount();
 alert("El diagrama contiene " + vwaShapeCount + " shapes");
    vwaPage.setZoom(50);
}

function onShapeSelectionChanged(source, args){
 alert(args);
 alert(source);
}
&lt;/script&gt;
&lt;/pre&gt;&lt;br /&gt;
Explicando el código anterior:&lt;br /&gt;
&lt;pre class="brush: js"&gt;&lt;script src="/js/VisioHelper.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;/pre&gt;&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lo primero que podemos observar es la inclusión de esta referencia a otro archivo .js que sirve como “Helper” principalmente para obtener la referencia a la instancia de la webpart de Visio Web Access. Notese que para poder crear la instancia de Vwa.VwaControl, en necesario proporcionar el id de la webpart de Visio, para fines de hacer este proceso un poco más “dinamico”, el helper busca todos los elementos &lt;strong&gt;div&lt;/strong&gt; que tengan la clase &lt;strong&gt;VisioWebAccess&lt;/strong&gt;, esta es la manera más eficiente de buscar en el DOM el id de la webpart de Visio. Evidentemente no funciona si existe más de una Visio Web Access Web Part en la página.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;pre class="brush: js"&gt;/*!
* Visio Web Access JavaScript Library v1.0.1
*
* Copyright 2010, Microsoft
*/

//----------------------------------------------------------
// gets the first instance of the VisioWebAccess web part on this page.
// 
// if you have more than one VWA web part on the page this
// function will return the first one that is found
//----------------------------------------------------------
function getVwaControl() {
    var webPartID = null;

    try {
        webPartID = findVwaControlId();

        if (webPartID == null) {
            throw new Error("VisioWebAccess class not found.  Please contact the site administrator.");
        }

        // get the web part ID that we found on the page
        vwaControl = new Vwa.VwaControl(webPartID);
    }
    catch (ex) {
        alert(ex);
    }
}

//----------------------------------------------------------
// find the ID of the VisioWebAccess web part on this page.
// 
// if you have more than one VWA web part on the page this
// function will return the first one that is found
//----------------------------------------------------------
function findVwaControlId() {
    var retVal = null;

    var divCollection = document.getElementsByTagName("div");

    for (var i = 0; i &amp;lt; divCollection.length; i++) {
        if (divCollection[i].getAttribute("class") == "VisioWebAccess") {
            // the actual id of the VWA web part is two levels higher than this class node
            retVal = divCollection[i].parentNode.parentNode.getAttribute('id');
            break;
        }
    }

    return retVal;
}

//recupera el objeto silverlight en donde se esta pintando el diagrama
function findVwaRenderingObject() {
    var retVal = null;
    var objectCollection = document.getElementsByTagName("object");
    for (var i = 0; i &amp;lt; objectCollection.length; i++) {
        if (objectCollection[i].getAttribute("id").toString().indexOf("VisioWebAccess") != -1
  || objectCollection[i].getAttribute("id").toString().indexOf("silverlight") != -1
  )
        {
            retVal = objectCollection[i].getAttribute('id');
            break;
        }
    }
    return retVal;
}

function findVwaRenderingScript() {
    var retVal = null;
    var objectCollection = document.getElementsByTagName("script");
    alert(objectCollection.length);
    for (var i = 0; i &amp;lt; objectCollection.length; i++) {
        if (objectCollection[i].getAttribute("type") == "text/xaml") {
            retVal = objectCollection[i];
        }
    }
    return retVal;
}&lt;/pre&gt;&lt;br /&gt;
La siguiente instrucción que agregamos es para adjuntar un manejador de eventos al evento &lt;a href="http://msdn.microsoft.com/en-us/library/bb383829.aspx"&gt;load de ASP.NET AJAX&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: js"&gt;Sys.Application.add_load(onApplicationLoad); 
&lt;/pre&gt;&lt;br /&gt;
Acto seguido, escribimos el manejador de eventos que referenciamos en el punto anterior. &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: js"&gt;function onApplicationLoad() {
    //obtenemos la instancia de la Visio Web Access Web Part
    getVwaControl();

    //Nos subscribimos a dos de los eventos que son expuestos por la API
    if (vwaControl != null) {
        vwaControl.addHandler("diagramcomplete", onDiagramComplete);
        vwaControl.addHandler("shapeselectionchanged", onShapeSelectionChanged);           
    }
    else {
        alert("Error connecting to Visio Web Part.  Please contact the site administrator.");
    }
}
&lt;/pre&gt;&lt;br /&gt;
En el fragmento de código anterior, primero hacemos una llamada a la función getVwaControl(), que se encuentra en la librería Helper, y que se encarga de inicializar la variable vwaControl a través de lo que ya describimos anteriormente, después de que se inicializo esta variable satisfactoriamente, utilizamos la función &lt;strong&gt;addHandler&lt;/strong&gt; de este objeto para suscribirnos a dos de los varios eventos que expone: &lt;strong&gt;diagramcomplete&lt;/strong&gt; y &lt;strong&gt;shapeselectionchanged&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Lo siguiente es agregar los manejadores de los eventos a los cuales nos subscribimos (&lt;strong&gt;diagramcomplete&lt;/strong&gt; y &lt;strong&gt;shapeselectionchanged&lt;/strong&gt;). &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: js"&gt;function onDiagramComplete() {
    //obtenemos la pagina activa con el metodo getActivePage()
    vwaPage = vwaControl.getActivePage();
 //obtenemos la coleccion de formas con el metodo getShapes()
    vwaShapes = vwaPage.getShapes();
    vwaShapeCount = vwaShapes.getCount();
 alert("El diagrama contiene " + vwaShapeCount + " shapes");
    vwaPage.setZoom(50);
}

function onShapeSelectionChanged(source, args){
 alert(args);
 alert(source);
}
&lt;/pre&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;En primer lugar, dentro de la función &lt;strong&gt;onDiagramComplete&lt;/strong&gt;, obtenemos la referencia a la página activa del diagrama, recordemos que un diagrama de Visio puede tener más de una página pero solo una activa, mediante la función &lt;strong&gt;getActivePage()&lt;/strong&gt; de la clase &lt;strong&gt;Vwa.Page&lt;/strong&gt;. Inmediatamente después obtenemos toda la colección de shapes (instancia de la clase &lt;strong&gt;Vwa.ShapeCollection&lt;/strong&gt;), para después solo obtener el número de elementos de esta colección y mostrarlo en un alert. Por ultimo vemos que se llama a la función &lt;strong&gt;setZoom()&lt;/strong&gt; de la clase&lt;strong&gt; Vwa.Page&lt;/strong&gt; para establecer el valor del zoom del diagrama. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Espero que esta explicación sirva como primer acercamiento al uso de esta interesante API, y sobre todo, sirva como fundamento de los siguientes posts de esta serie. Si tienen alguna duda o comentario no duden en hacermela saber.&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;Ya por último dejo algunas referencias para que puedan adentrarse más en el uso de esta API&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/b/visio/archive/2010/02/21/the-visio-services-javascript-mashup-api.aspx"&gt;The Visio Services JavaScript Mashup API&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://office.microsoft.com/en-us/sharepoint-server-help/roadmap-publish-visio-drawings-to-a-sharepoint-site-HA101835144.aspx"&gt;&lt;span style="font-family: Calibri;"&gt;Roadmap: Publish Visio drawings to a SharePoint site&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/bb383829.aspx"&gt;Evento load de ASP.NET AJAX&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;strong&gt;Happy Coding!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-1490680655628214963?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/1490680655628214963/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=1490680655628214963&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/1490680655628214963?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/1490680655628214963?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/05/visio-services-api.html" title="Visio Services API" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-MzJSw3TZb5c/Tc2UVc_lutI/AAAAAAAAAXw/NxU--8y-D6o/s72-c/vwa3.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0MMQX46eSp7ImA9WhZWE00.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-8260081615751742236</id><published>2011-05-13T09:49:00.000-07:00</published><updated>2011-05-13T09:51:20.011-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-13T09:51:20.011-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Codeplex" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><category scheme="http://www.blogger.com/atom/ns#" term="FBA" /><title>SharePoint 2010 FBA Pack</title><content type="html">&lt;div style="text-align: justify;"&gt;Seguramente ustedes recordaran el proyecto &lt;a href="http://cks.codeplex.com/"&gt;CKS (Community Kit for SharePoint)&lt;/a&gt;, dentro del cual se encontraban varias herramientas como el &lt;a href="http://cks.codeplex.com/releases/view/17901"&gt;Forms Based Authentication Solution&lt;/a&gt; con el cual podíamos habilitar, de manera muy sencilla, varias web parts que nos permitían administrar e interactuar con el sistema de FBA configurado en nuestro sitio SharePoint 2007.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Pues con la buena noticia de que por lo menos este componente ha logrado tener continuidad para la versión de SharePoint 2010 y está disponible para su libre descarga en el &lt;a href="http://sharepoint2010fba.codeplex.com/"&gt;sitio de CodePlex del proyecto&lt;/a&gt;. Algunas de los elementos que podemos encontrar en este pack son:&lt;/div&gt;&lt;br /&gt;
1. Membership Request Web Part&lt;br /&gt;
2. Change Password Web Part&lt;br /&gt;
3. Password Recovery Web Part&lt;br /&gt;
4. Change Password Page&lt;br /&gt;
5. User Management&lt;br /&gt;
6. Role Management&lt;br /&gt;
7. Membership Review&lt;br /&gt;
8. FBA Pack Configuration&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-IUXlt-pPFoA/Tc1f4waCe5I/AAAAAAAAAXk/ArOWCEf-2RM/s1600/fba1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" j8="true" src="http://1.bp.blogspot.com/-IUXlt-pPFoA/Tc1f4waCe5I/AAAAAAAAAXk/ArOWCEf-2RM/s320/fba1.png" width="320" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-gGJ0HMs-0hQ/Tc1f7pWlzCI/AAAAAAAAAXs/0OM4B5vzwIQ/s1600/fba3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="119" j8="true" src="http://3.bp.blogspot.com/-gGJ0HMs-0hQ/Tc1f7pWlzCI/AAAAAAAAAXs/0OM4B5vzwIQ/s320/fba3.png" width="320" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-iDHdriop_6s/Tc1f62hz4zI/AAAAAAAAAXo/WNcK4eoMPNY/s1600/fba2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="127" j8="true" src="http://2.bp.blogspot.com/-iDHdriop_6s/Tc1f62hz4zI/AAAAAAAAAXo/WNcK4eoMPNY/s320/fba2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Adicionalmente, aunque no menos importante, remarcar el hecho de que también podemos obtener el código fuente de esta solución para agregar alguna característica extra, o modificar el comportamiento de alguna existente. Además los invito a que compartan sus aportaciones a este y tantos otros proyectos que se encuentran en &lt;a href="http://www.codeplex.com/"&gt;CodePlex&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy Coding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-8260081615751742236?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/8260081615751742236/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=8260081615751742236&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/8260081615751742236?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/8260081615751742236?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/05/sharepoint-2010-fba-pack.html" title="SharePoint 2010 FBA Pack" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-IUXlt-pPFoA/Tc1f4waCe5I/AAAAAAAAAXk/ArOWCEf-2RM/s72-c/fba1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0ANR306fip7ImA9WhZXGUs.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-440695366398329819</id><published>2011-05-09T11:53:00.000-07:00</published><updated>2011-05-09T12:36:36.316-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T12:36:36.316-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Service Applications" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Visio Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><title>Iniciando con Visio Services</title><content type="html">Después de un largo periodo en el que no me había podido hacer el tiempo necesario para escribir, hoy quiero abrir una serie de posts que se relacionan con el uso de uno de los Service Application que se encuentran listos para configurar y usarse en SharePoint Server 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Visio Graphics Services &lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Visio Graphics Services es un Service Application que se encuentra dentro de SharePoint Server 2010 y que básicamente permite a los usuarios compartir y visualizar diagramas de Visio rendereados en el browser, a través de la webpart de Visio Web Access. Los diagramas que se pueden visualizar a través de esta webpart tienen la extension .vwd (Visio Web Diagram).&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Beneficios principales&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Algunas de las grandes ventajas de compartir un diagrama de Visio web (.vdw) haciendo uso de este Service Application, es que al ser rendereado (dibujado) en el navegador, los usuarios finales no requieren del cliente de Visio (inclusive sin el visor de Visio) instalado en sus equipos. Evidentemente el responsable de publicar los diagramas de Visio, si deberá contar con Microsoft Visio Professional 2010 ó Microsoft Visio Premium 2010. La funcionalidad que la Visio Web Access WebPart brinda para interactuar con los diagramas es la elemental: exploración y navegación básica, zoom, etc. Aunque esta funcionalidad es solo la más elemental, es aquí en donde la creatividad de los desarrolladores entra en juego para brindar a los usuarios finales una experiencia de uso mucho más rica.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Otro de los beneficios más importantes es la capacidad de “refrescado” de las conexiones a fuentes de datos que el diagrama contenga, esto es, si el diagrama contiene conexiones a fuentes de datos externas como Excel, listas de SharePoint, SQL Server, etc, Visio Services permite que estas conexiones sean respetadas y por ende actualizadas cada que el diagrama sea visualizado por los usuarios. Esta es una gran característica, ya que permite tener diagramas que muestran información casi en tiempo real.&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Algunas de las fuentes de datos soportadas por Visio Services son:&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;SQL Server 7.0, 2000, 2005 (32b y 64b), 2008 (32b y 64b), 2008 R2 (32b y 64b)&lt;/li&gt;
&lt;li&gt;Archivos de Excel publicados en Excel Services&lt;/li&gt;
&lt;li&gt;Listas de SharePoint Server&lt;/li&gt;
&lt;li&gt;OLE DB u ODBC&lt;/li&gt;
&lt;li&gt;Custom Data Providers&lt;/li&gt;
&lt;/ul&gt;&lt;strong&gt;Configuración de Visio Service Application&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
La configuración de este service application es realmente muy sencilla, para lo cual prefiero dejar la referencia oficial de TechNet. Para la mayoría de los escenarios esta referencia debiera ser más que suficiente, en posts futuros estaré tocando escenarios no tan comunes.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Referencias:&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/ee663485.aspx"&gt;Visio Services Overview (SharePoint Server 2010)&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/b/visio/archive/2009/10/30/introducing-visio-services.aspx"&gt;Introducing Visio Services&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://visiotoolbox.com/2010/visio-services.aspx"&gt;Visio Services&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/ee524061.aspx"&gt;Configure Visio Graphics Service Global Settings (SharePoint Server 2010)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;Happy Coding!&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-440695366398329819?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/440695366398329819/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=440695366398329819&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/440695366398329819?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/440695366398329819?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2011/05/iniciando-con-visio-services.html" title="Iniciando con Visio Services" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkQMSHoyfyp7ImA9Wx9SFkQ.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-4057246262397880528</id><published>2010-12-06T21:03:00.000-08:00</published><updated>2010-12-06T21:06:29.497-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-06T21:06:29.497-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WebCast" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><title>El Día del Flujo de Trabajo de SharePoint 2010 para Desarrolladores</title><content type="html">Solo para invitarlos cordialmente a la serie de webcast sobre flujos de trabajo en SharePoint 2010 que se estará llevando acabo el día 15 de Diciembre del presente año, en donde estaré participando con una charla acerca del uso de Visio Services para el desarrollo de workflows.&lt;br /&gt;
&lt;br /&gt;
Sin duda es una muy buena oportunidad para conocer todo lo referente a los flujos de trabajo en SP 2010, lo que siempre quisiste preguntar pero no habías podido. Esta por demás decir que los expositores son el Jet Set del Desarrollo en SharePoint (&lt;strike&gt;excepto yo, que solo estoy de colado&lt;/strike&gt;)&lt;br /&gt;
&lt;table border="0" cellpadding="0" cellspacing="0" sizcache="3" sizset="1"&gt;&lt;tbody sizcache="3" sizset="1"&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-78-metablogapi/1007.clip_5F00_image001_5F00_48274641.png"&gt;&lt;img alt="clip_image001" border="0" height="83" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-78-metablogapi/4718.clip_5F00_image001_5F00_thumb_5F00_46767A6D.png" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image001" width="622" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign="top" width="624"&gt;&lt;br /&gt;
El miércoles 15 de diciembre del presente año varios MVPs estaran celebrando el día del flujo de trabajo SharePoint 2010 para desarrolladores en donde presentaran los conceptos mas relevantes a relacionados con el desarrollo de flujos de trabajo con Microsoft SharePoint Server 2010 mediante presentaciones abiertas en línea de forma continua durante el transcurso del día. &lt;/td&gt;&lt;/tr&gt;
&lt;tr sizcache="3" sizset="1"&gt;&lt;td sizcache="3" sizset="1" valign="top" width="624"&gt;&lt;br /&gt;
&lt;table border="0" cellpadding="0" cellspacing="3"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;br /&gt;
&lt;a href="http://www.haarongonzalez.com.mx/wfday/sessions/session1.png"&gt;&lt;img alt="clip_image002" border="0" height="103" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-78-metablogapi/3755.clip_5F00_image002_5F00_0567FB09.png" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image002" width="134" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;br /&gt;
&lt;strong&gt;Conociendo los Flujos de Trabajo Pre Construidos en SharePoint 2010 &lt;/strong&gt;&lt;br /&gt;
En esta sesión conoceremos la propuesta de flujos de trabajo que SharePoint 2010 pone en la mesa y las características de cada uno de los flujos de trabajo pre construidos en el producto. Cuando y donde genera valor utilizarlo para automatizar algún proceso u operación empresarial y mejor aún cómo es posible extenderlos para personalizar algún proceso. &lt;br /&gt;
15 de Diciembre 2010 a las 10:00 AM Tiempo de México &lt;br /&gt;
&lt;a href="https://www.livemeeting.com/cc/mvp/join?id=wfday1&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=wfday1&amp;amp;role=attend&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;br /&gt;
&lt;a href="http://www.haarongonzalez.com.mx/wfday/sessions/session2.png"&gt;&lt;img alt="clip_image003" border="0" height="103" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-78-metablogapi/3250.clip_5F00_image003_5F00_6F31DFB6.png" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image003" width="134" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;br /&gt;
&lt;strong&gt;Construyendo Flujos de Trabajo en SharePoint 2010 utilizando SharePoint Designer 2010&lt;/strong&gt; &lt;br /&gt;
En esta sesión veremos el soporte que SharePoint Designer 2010 tiene para la creación y manipulación de flujos de trabajo para SharePoint. Conozca el nuevo diseñador de flujos de trabajo, las actividades y condiciones disponibles en esta versión y como programar tus propias condiciones y acciones para SharePoint Designer 2010. &lt;br /&gt;
15 de Diciembre 2010 a las 11:30 AM Tiempo de México &lt;br /&gt;
&lt;a href="https://www.livemeeting.com/cc/mvp/join?id=wfday&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=wfday&amp;amp;role=attend&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;br /&gt;
&lt;a href="http://www.haarongonzalez.com.mx/wfday/sessions/session3.png"&gt;&lt;img alt="clip_image004" border="0" height="103" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-78-metablogapi/4130.clip_5F00_image004_5F00_632FEF82.png" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image004" width="134" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;br /&gt;
&lt;strong&gt;Construyendo Flujos de Trabajo en SharePoint 2010 utilizando Visio Services &lt;/strong&gt;&lt;br /&gt;
En esta sesión veremos el valor que Visio Services aporta al mundo de los flujos de trabajo. Al fin contamos con una alternativa mucho más rica para poder mostrar de forma gráfica el estado de los flujos en ejecución y brindar opciones al usuario para consultar información contextual de una instancia en ejecución del flujo de trabajo. &lt;br /&gt;
15 de Diciembre 2010 a las 3:00 PM Tiempo de México &lt;br /&gt;
&lt;a href="https://www.livemeeting.com/cc/mvp/join?id=wfday3&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=wfday3&amp;amp;role=attend&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign="top"&gt;&lt;br /&gt;
&lt;a href="http://www.haarongonzalez.com.mx/wfday/sessions/session4.png"&gt;&lt;img alt="clip_image005" border="0" height="103" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-78-metablogapi/1680.clip_5F00_image005_5F00_62578998.png" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image005" width="134" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;br /&gt;
&lt;strong&gt;Construyendo Flujos de Trabajo en SharePoint 2010 utilizando Visual Studio 2010 &lt;/strong&gt;&lt;br /&gt;
Esta es una sesión para desarrolladores .NET que construyen flujos de trabajo para SharePoint 2007 y buscan conocer cómo construir flujos de trabajo en SharePoint 2010. Exploraremos las nuevas características relacionadas con flujos dentro de SharePoint 2010 y el soporte simplificado Visual Studio 2010 aporta para facilitar su construcción y despliegue. &lt;br /&gt;
15 de Diciembre 2010 a las 4:30 PM Tiempo de México &lt;br /&gt;
&lt;a href="https://www.livemeeting.com/cc/mvp/join?id=wfday4&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=wfday4&amp;amp;role=attend&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td valign="top"&gt;Puedes seguir la cuenta del evento aqui: &lt;a href="http://twitter.com/wfday"&gt;&lt;img alt="clip_image006" border="0" height="38" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-78-metablogapi/6215.clip_5F00_image006_5F00_7A7AF3F3.gif" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image006" width="36" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Happy Coding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-4057246262397880528?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/4057246262397880528/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=4057246262397880528&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/4057246262397880528?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/4057246262397880528?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2010/12/solo-para-invitarlos-cordialmente-la.html" title="El Día del Flujo de Trabajo de SharePoint 2010 para Desarrolladores" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ck8ARnc6cSp7ImA9Wx9TFEQ.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-5077728159027933373</id><published>2010-11-22T21:40:00.000-08:00</published><updated>2010-11-22T21:40:47.919-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-22T21:40:47.919-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Configuracion SharePoint 2010;" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="host header" /><category scheme="http://www.blogger.com/atom/ns#" term="México" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><title>Host-named SiteCollections</title><content type="html">En esta ocasión quiero hablar un poco acerca de los Host-Named SiteCollections (ó host-headers sitecollections). Que son, para que se utilizan, cuando no usarlos y como crearlos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;¿Que son los Host-Named SiteCollections?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Es la capacidad que brinda la infraestructura de SharePoint para crear SiteCollections, con lo que los amigos norteamericanos gustan nombrar como “vanity urls”. Es decir la capacidad de crear SiteCollections con un host-header personalizado e independiente de la url de la aplicación web, por ejemplo, consideremos las siguientes urls de sitecollections.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;a href="http://sales.contoso.com/"&gt;http://sales.contoso.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://team.development.com/"&gt;http://team.development.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://research/"&gt;http://research/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Si intentáramos utilizar el método de Path-based SiteCollection para formar estas urls, no nos quedaría más remedio que crear cada uno de estos sitecollection en una web application diferente para permitir que cada sitecollection tenga la url que se requiere.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;¿Qué problema resuelven los Host-Named SiteCollections?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Gracias a esta característica podemos crear sitecollections con las urls que antes vimos, y todas vivir en una misma web application, sin necesidad de crear una web application independiente solo para resolver el tema de la url.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;¿Para qué se utilizan los Host-Named SiteCollections?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Como comentamos antes, el uso principal es proveer la habilidad de nombrar sitecollections con una url que no tiene que ver en nada con la url de la web application en la cual vive. &lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Tiene un uso muy extendido en el área de hosting empresarial, o sea las empresas que se dedican a proveer hospedaje de sitios SharePoint, y es que, por medio de esta característica pueden construir una solución altamente escalable, ya que basta con crear una sitecollection con una url específica y asignar esa url a una entrada particular en sus DNS’s.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Otro uso es claramente, cuando una organización quiere dar identidad propia a cada una de sus áreas y/o suborganizaciones, y esto lo refleja en cada uno de los sitios de las mismas, que no solo tienen un aspecto visual distinto sino también una url única y acorde a sus funciones.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;¿Cómo crear Host-Named SiteCollections?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Al igual que en la versión anterior, solo se pueden crear host-named sitecollections a través scripting, para generar los sitecollections antes mencionados podemos usar el siguiente script de ejemplo.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;$web=Get-SPWebApplication &lt;a href="http://sp2010:5300/"&gt;http://sp2010:5300/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;New-SPSite "http://sales.contoso.com" -OwnerAlias "moss\administrator" -HostHeaderWebApplication $web -Template "STS#0"&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;New-SPSite "http://team.development.com" -OwnerAlias "moss\administrator" -HostHeaderWebApplication $web -Template "STS#0"&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;New-SPSite "http://research" -OwnerAlias "moss\administrator" -HostHeaderWebApplication $web -Template "STS#0"&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_RNN0hboaSjk/TOtP7l2KYHI/AAAAAAAAAXU/YP-Zw2rpeWY/s1600/img5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="358" ox="true" src="http://1.bp.blogspot.com/_RNN0hboaSjk/TOtP7l2KYHI/AAAAAAAAAXU/YP-Zw2rpeWY/s640/img5.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_RNN0hboaSjk/TOtOLbAdMEI/AAAAAAAAAXM/f84IUelJqqg/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="225" ox="true" src="http://3.bp.blogspot.com/_RNN0hboaSjk/TOtOLbAdMEI/AAAAAAAAAXM/f84IUelJqqg/s400/img2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_RNN0hboaSjk/TOtOB1UQB1I/AAAAAAAAAXI/Yw5TDHWmjNQ/s1600/img3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="225" ox="true" src="http://2.bp.blogspot.com/_RNN0hboaSjk/TOtOB1UQB1I/AAAAAAAAAXI/Yw5TDHWmjNQ/s400/img3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_RNN0hboaSjk/TOtN5qGJH5I/AAAAAAAAAXE/ysVEIDsQmOI/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="225" ox="true" src="http://2.bp.blogspot.com/_RNN0hboaSjk/TOtN5qGJH5I/AAAAAAAAAXE/ysVEIDsQmOI/s400/img1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_RNN0hboaSjk/TOtP2CIokZI/AAAAAAAAAXQ/1BQrYgpobVA/s1600/img4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="225" ox="true" src="http://1.bp.blogspot.com/_RNN0hboaSjk/TOtP2CIokZI/AAAAAAAAAXQ/1BQrYgpobVA/s400/img4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;strong&gt;Ventajas y Desventajas&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Como un buen amigo dice, todo siempre es un trade-off, y este tema no sería la excepción. Algunas de las desventajas de usar esta características versus usar el tradicional path-based sitecollections son:&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Desventajas&lt;/strong&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;No soportan AAM (Alternate Access mappings)&lt;/li&gt;
&lt;li&gt;Se consideran siempre en la zona Default, por lo que no pueden responder a dos o más urls diferentes.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Ventajas:&lt;/strong&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Alta escabilidad en soluciones de hosting&lt;/li&gt;
&lt;li&gt;Url personalizadas&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Mención especial merece el hecho de que, por residir varios sitecollections en una misma web application, se comparte el web.config, esto es una ventaja o desventaja según se quiera o no compartir/aislar funcionalidad entre los sitecollections&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;Por último quisiera mencionar una utilería creada por &lt;a href="http://weblogs.asp.net/sharadkumar/archive/2010/03/28/sharepoint-2010-central-admin-tooling-to-create-host-header-site-collections.aspx"&gt;Sharad Kumar&lt;/a&gt;, para agregar a la interfaz del sitio central de administración una opción para crear estos host-named sitecollections de manera visual&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_RNN0hboaSjk/TOtQzdvdAlI/AAAAAAAAAXY/DrXQ_5tJFVk/s1600/img6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="340" ox="true" src="http://1.bp.blogspot.com/_RNN0hboaSjk/TOtQzdvdAlI/AAAAAAAAAXY/DrXQ_5tJFVk/s640/img6.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;Recursos Adicionales:&lt;/div&gt;&lt;div&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc424952.aspx"&gt;Plan for host-named site collections (SharePoint Server 2010)&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://weblogs.asp.net/sharadkumar/archive/2010/03/28/sharepoint-2010-central-admin-tooling-to-create-host-header-site-collections.aspx"&gt;SharePoint 2010 – Central Admin tooling to create host header site collections&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-5077728159027933373?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/5077728159027933373/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=5077728159027933373&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/5077728159027933373?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/5077728159027933373?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2010/11/host-named-sitecollections.html" title="Host-named SiteCollections" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_RNN0hboaSjk/TOtP7l2KYHI/AAAAAAAAAXU/YP-Zw2rpeWY/s72-c/img5.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUIMQ3s_fyp7ImA9Wx9TE0s.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-4885714917600817736</id><published>2010-11-21T10:19:00.000-08:00</published><updated>2010-11-21T10:19:42.547-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-21T10:19:42.547-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Configuracion SharePoint 2010;" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><category scheme="http://www.blogger.com/atom/ns#" term="Errores SharePoint" /><title>Configuración SharePoint 2010 - User Profile Application Service Error</title><content type="html">Uno de los tantos errores que podemos obtener al intentar configurar el nuevo servicio de aplicación para perfiles de usuario(User Profile Application Service), al querer acceder a la página de administración de este servicio nos aparece este mensaje: &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_RNN0hboaSjk/TOlgzKnZzOI/AAAAAAAAAW0/xQ8p73JgT9M/s1600/error1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" ox="true" src="http://3.bp.blogspot.com/_RNN0hboaSjk/TOlgzKnZzOI/AAAAAAAAAW0/xQ8p73JgT9M/s640/error1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Y al revisar los logs de SharePoint encontramos una entrada como la siguiente:&lt;br /&gt;
&lt;blockquote&gt;UserProfileServiceUserStatisticsWebPart:LoadControl failed, Exception: System.IO.FileLoadException: The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager.InitializeIlmClient(String ILMMachineName, Int32 FIMWebClientTimeOut) &lt;br /&gt;
at Microsoft.Office.Server.UserProfiles.UserProfileConfigManager..ctor(UserProfileApplicationProxy userProfileApplicationProxy, Guid partitionID) &lt;br /&gt;
at Microsoft.SharePoint.Portal.WebControls.UserProfileServiceStatisticsWebPartBase.LoadControl(Object sender, EventArgs e)&lt;/blockquote&gt;Y es que he de admitir que si bien es cierto que este servicio sufrió grandes modificaciones y adiciones de nuevas características para la versión 2010, también es cierto que se volvió más difícil de configurar, administrar, y diagnosticar al momento de implementarlo. Y no difícil por la cantidad de pasos o procedimientos que se tienen que ejecutar, sino por la cantidad de errores con que nos podemos encontrar al intentar hacerlo trabajar. &lt;br /&gt;
&lt;br /&gt;
Sin embargo este error, en especial, es muy conocido y fácil de solucionar. El escenario en el que se presenta muy usualmente es el siguiente.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Escenario&lt;/strong&gt;&lt;br /&gt;
El servicio User Profile Application Service y el Sitio Central de Administración han sido provisionados en el mismo servidor.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Solución&lt;/strong&gt;&lt;br /&gt;
Ejecute un IISRESET después de iniciar el servicio, &lt;strong&gt;eso es todo!&lt;/strong&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-4885714917600817736?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/4885714917600817736/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=4885714917600817736&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/4885714917600817736?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/4885714917600817736?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2010/11/configuracion-sharepoint-2010-user.html" title="Configuración SharePoint 2010 - User Profile Application Service Error" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_RNN0hboaSjk/TOlgzKnZzOI/AAAAAAAAAW0/xQ8p73JgT9M/s72-c/error1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DE4AQXg4cCp7ImA9Wx5aGEg.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-5376117961280537770</id><published>2010-11-15T13:35:00.000-08:00</published><updated>2010-11-15T13:35:40.638-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-15T13:35:40.638-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Desarrollo SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Gerardo Reyes Ortiz" /><title>Desarrollo SharePoint 2010 - The Web application at [Url] could not be found</title><content type="html">El siguiente es un error que aparece con mucha frecuencia &amp;nbsp;cuando comenzamos a desarrollar para SharePoint 2010, por lo menos esa es mi impresión en los equipos de desarrollo en que he participado.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_RNN0hboaSjk/TOGgOqYHR5I/AAAAAAAAAWo/yfD355L3U6I/s1600/image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="301" src="http://1.bp.blogspot.com/_RNN0hboaSjk/TOGgOqYHR5I/AAAAAAAAAWo/yfD355L3U6I/s400/image1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;blockquote&gt;The Web application at [Url] could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.&lt;/blockquote&gt;La excepción se presenta cuando accedemos programáticamente a un sitio SharePoint ("http://sp2010"), obviamente después de habernos asegurado que la url esta correcta. &lt;br /&gt;
&lt;br /&gt;
Y es que sí creamos&amp;nbsp;algún&amp;nbsp;proyecto desde las plantillas de proyecto que vienen por default en Visual Studio 2010 especiales para desarrollo SharePoint, como lo son "Visual Web Part", "List Definition", "Sequential Workflow", etc. no obtendremos este error.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_RNN0hboaSjk/TOGkwn9-6AI/AAAAAAAAAWs/S902QvdQY60/s1600/image3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_RNN0hboaSjk/TOGkwn9-6AI/AAAAAAAAAWs/S902QvdQY60/s400/image3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Sin embargo si creamos, por ejemplo, una aplicación de consola ó Windows Forms y después de agregar las referencias necesarias para trabajar con la API de SharePoint, muy probablemente nos aparecerá este error. Y esto es debido a que este tipo de aplicaciones al crearse especifican el valor de configuración de &lt;b&gt;Platform&lt;/b&gt; &lt;b&gt;target &lt;/b&gt;a &lt;b&gt;x86, &lt;/b&gt;lo que indica que nuestra aplicación intentara ejecutarse como un proceso de 32 bits.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_RNN0hboaSjk/TOGk2tuG-NI/AAAAAAAAAWw/NF6zYEpLNBg/s1600/image2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_RNN0hboaSjk/TOGk2tuG-NI/AAAAAAAAAWw/NF6zYEpLNBg/s400/image2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Para solucionar ó prevenir este comportamiento solo se debe establecer este valor de configuración a &lt;b&gt;x64 &lt;/b&gt;ó &lt;b&gt;Any CPU&lt;/b&gt;(si estamos desarrollando en un ambiente &lt;b&gt;x64&lt;/b&gt;) y nuestro código funcionará correctamente.&lt;br /&gt;
&lt;br /&gt;
Por cierto, no se olviden de establecer el&amp;nbsp;parámetro&amp;nbsp;de configuración &lt;b&gt;Target framework&lt;/b&gt; a: .&lt;b&gt;Net Framework 3.5&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Recursos adicionales:&lt;br /&gt;
&lt;a href="http://visualstudiohacks.com/articles/visual-studio-net-platform-target-explained/"&gt;Visual Studio .NET Platform Target Explained&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy Coding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-5376117961280537770?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/5376117961280537770/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=5376117961280537770&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/5376117961280537770?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/5376117961280537770?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2010/11/desarrollo-sharepoint-2010-web.html" title="Desarrollo SharePoint 2010 - The Web application at [Url] could not be found" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_RNN0hboaSjk/TOGgOqYHR5I/AAAAAAAAAWo/yfD355L3U6I/s72-c/image1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkQNQXkyfSp7ImA9Wx5VGUQ.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-2181851492489406821</id><published>2010-10-11T22:18:00.000-07:00</published><updated>2010-10-13T10:19:50.795-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-13T10:19:50.795-07:00</app:edited><title>SharePoint DisableLoopbackCheck security feature</title><content type="html">Hace unos días algunos desarrolladores me comentaban acerca de un "error" que ellos describían de la siguiente manera: "No podemos ver ninguna de los sitios SharePoint en el Servidor".&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;El problema&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Cada vez que intentaban ver alguno de los sitios SharePoint, que se habían creado previamente, les pedía en repetidas ocasiones (las tres de rigor) su usuario y contraseña antes de mandar un error 401.1 Access Denied y una entrada en el EventViewer, todo esto solo cuando accedían a alguno de los sitios desde el servidor, desde cualquier cliente todo funcionaba correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_RNN0hboaSjk/TLPtssjitPI/AAAAAAAAAWY/MA4Jj7td1QA/s1600/401.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" ex="true" src="http://3.bp.blogspot.com/_RNN0hboaSjk/TLPtssjitPI/AAAAAAAAAWY/MA4Jj7td1QA/s1600/401.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;strong&gt;Consideraciones a tomar&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
En primera instancia esto no es un gran problema porque ningún usuario usa alguno de los servidores de la granja de SharePoint para ver los sitios ahí hosteados. Pero y si es un servidor de pruebas? ó si ese servidor del que hablamos es nuestro entorno de desarrollo?. En estos casos es obligatorio que podamos acceder a los sitios sin que este comportamiento ocurra.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Un poco de historia&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Este característica de seguridad fue introducida desde el Service Pack 1 de Windows Server 2003 y está presente hasta las versiones actuales de Windows Server 2008 R2. Básicamente lo que hace es bloquear el acceso a una web application usando el FQDN, si esto sucede la característica entra en acción y bloquea este acceso enviando un error 401.1, que por cierto no es muy adecuado. &lt;br /&gt;
&lt;br /&gt;
¿Por qué se introdujo esta característica? Pues porque existían varios ataques que se basaban en reflección para engañar a IE y hacerle creer que se estaba trabajando de manera local y así burlar muchas restricciones de seguridad.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Algunos otros escenarios&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Otros escenarios en los que esta característica de seguridad puede causar problemas, es en los servidores que además de tener el rol de WFE, también tienen el rol de Index. Esto porque básicamente el servidor Index intenta hacer un crawling (peticiones http) a sí mismo. Este comportamiento es fácilmente detectable porque los logs de crawling muestran cientos de errores del tipo 401.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Las soluciones&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Pues muy fácil, seguimos las instrucciones del Microsoft's &lt;a href="http://support.microsoft.com/kb/896861"&gt;KB article 896861&lt;/a&gt;. Pero entonces para que todo este rollo que acaban de leer?&lt;br /&gt;
&lt;br /&gt;
La solución dependerá en gran medida de lo que quieran hacer y el entorno en el que se encuentren. Como comentaba anteriormente, si se trata de un servidor de pruebas o de desarrollo, adelante!! Sigan el artículo y deshabiliten la característica LoopBackCheck.&lt;br /&gt;
&lt;br /&gt;
Pero en un servidor productivo esto no es aceptable, ya que se constituye en un hueco de seguridad importante. Pero entonces, no es posible solucionar este problemilla en un servidor productivo? Por supuesto que sí!, sin embargo la solución no va por el camino de deshabilitar la característica LoopBackCheck, lo ideal es utilizar el Método dos descrito en el &lt;a href="http://support.microsoft.com/kb/896861"&gt;KB 896861&lt;/a&gt;, el cual indica la forma de agregar una entrada en el registro llamada BackConnectionHostNames, dentro de esta nueva entrada se agregarán host names que serán excluidos del funcionamiento de esta característica.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_RNN0hboaSjk/TLPtz7AVjtI/AAAAAAAAAWc/qigmuDBobpI/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" ex="true" height="202" src="http://3.bp.blogspot.com/_RNN0hboaSjk/TLPtz7AVjtI/AAAAAAAAAWc/qigmuDBobpI/s640/img1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_RNN0hboaSjk/TLPuF3Pfl5I/AAAAAAAAAWk/gN_qSlHSG-w/s1600/img2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" ex="true" src="http://4.bp.blogspot.com/_RNN0hboaSjk/TLPuF3Pfl5I/AAAAAAAAAWk/gN_qSlHSG-w/s1600/img2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Algunas referencias adicionales&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.spfoxhole.com/Blog/Lists/Posts/Post.aspx?ID=141" target="_blank"&gt;DisableLoopbackCheck?&amp;nbsp; Lets do it the right way&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.harbar.net/archive/2010/02/12/groundhog-day-configuring-back-connection-host-names-using-group-policy.aspx" target="_blank"&gt;Groundhog Day: Configuring Back Connection Host Names using Group Policy&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://stsadm.blogspot.com/2009/09/setting-back-connection-host-names-for.html"&gt;Setting Back Connection Host Names for SharePoint 2007 Using STSADM&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://support.microsoft.com/kb/896861" target="_blank"&gt;You receive error 401.1 when you browse a Web site that uses Integrated Authentication and is hosted on IIS 5.1 or a later version&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-2181851492489406821?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/2181851492489406821/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=2181851492489406821&amp;isPopup=true" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/2181851492489406821?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/2181851492489406821?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2010/10/sharepoint-disableloopbackcheck.html" title="SharePoint DisableLoopbackCheck security feature" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_RNN0hboaSjk/TLPtssjitPI/AAAAAAAAAWY/MA4Jj7td1QA/s72-c/401.gif" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;D0MBQnc5fCp7ImA9Wx5SEU0.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-5362723137042768643</id><published>2010-08-05T13:35:00.000-07:00</published><updated>2010-08-06T07:37:33.924-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-06T07:37:33.924-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Office 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><title>The list cannot be displayed in Datasheet view with Office 2010</title><content type="html">Si aún están utilizando Office 2007, y están intentado ver la vista de hoja de datos (datasheet view) de una lista que se encuentre en un sitio de SharePoint 2007, &lt;a href="http://blogs.sharepointhosting.com/Lists/Posts/Post.aspx?List=399ed944-72d2-4932-bc13-de0586abf2d1&amp;amp;ID=81" target="_blank"&gt;este artículo&lt;/a&gt; puede resolver su problema.&lt;br /&gt;
&lt;br /&gt;
Sin embargo, si ustedes como yo, están utilizando ya Office 2010 e intentan acceder a su vieja intranet corporativa(por poner un ejemplo), desplegada sobre SharePoint 2007, podrían obtener también este error.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="197" src="http://4.bp.blogspot.com/_RNN0hboaSjk/TFsd1I9qw0I/AAAAAAAAAWE/k4Qspr9VOtY/s400/img1.png" width="400" /&gt;&lt;/div&gt;La solución a este pequeño inconveniente es instalar el &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&amp;amp;displaylang=en" target="_blank"&gt;2007 Office System Driver: Data Connectivity Components&lt;/a&gt;, tal como refiere el &lt;a href="http://support.microsoft.com/kb/2266203/en-us" target="_blank"&gt;KB 2266203.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Y con este sencillo paso, ahora ya podrán abrir las listas de SharePoint 2007 en modo "datasheet view" aún cuando no tengan instalado Office 2007 y si el poderoso Office 2010.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-5362723137042768643?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/5362723137042768643/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=5362723137042768643&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/5362723137042768643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/5362723137042768643?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2010/08/list-cannot-be-displayed-in-datasheet.html" title="The list cannot be displayed in Datasheet view with Office 2010" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_RNN0hboaSjk/TFsd1I9qw0I/AAAAAAAAAWE/k4Qspr9VOtY/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUcDQHg-fCp7ImA9Wx5TEks.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-661320705155921941</id><published>2010-07-25T14:37:00.000-07:00</published><updated>2010-07-27T14:44:31.654-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-27T14:44:31.654-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Errores SharePoint" /><title>[SharePoint Error] - An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown</title><content type="html">Una excepción muy rara y un poco fuera de lugar, dado que no estaba ejecutando algún proceso de migración, como se podría suponer por el nombre y descripción del error.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_RNN0hboaSjk/TE9SV327zdI/AAAAAAAAAV8/KuAaSCwPh7c/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="341" src="http://4.bp.blogspot.com/_RNN0hboaSjk/TE9SV327zdI/AAAAAAAAAV8/KuAaSCwPh7c/s400/img1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;blockquote&gt;Failed to create the configuration database.&lt;br /&gt;
An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown.  Additional exception information: One or more types failed to load. Please refer to the upgrade log for more details.&lt;br /&gt;
Microsoft.SharePoint.Upgrade.SPUpgradeException: One or more types failed to load. Please refer to the upgrade log for more details.&lt;br /&gt;
at Microsoft.SharePoint.Upgrade.SPDelegateManager.RegisterAssembly(Assembly asm, UInt32 nOrder)&lt;br /&gt;
at Microsoft.SharePoint.Upgrade.SPDelegateManager.get_InitialTypeDictionary()&lt;br /&gt;
at Microsoft.SharePoint.Upgrade.SPDelegateManager.GetDelegateTypes(Type tpObject)&lt;br /&gt;
at Microsoft.SharePoint.Upgrade.SPDelegateManager.GetDelegates(Object o)&lt;br /&gt;
at Microsoft.SharePoint.Upgrade.SPDelegateManager.GetUpgraders(Object o)&lt;br /&gt;
at Microsoft.SharePoint.Upgrade.SPManager.NeedsUpgradeFalse(Object o)&lt;br /&gt;
at Microsoft.SharePoint.Administration.SPPersistedUpgradableObject.set_NeedsUpgrade(Boolean value)&lt;br /&gt;
at Microsoft.SharePoint.Administration.SPPersistedObject.Update()&lt;br /&gt;
at Microsoft.SharePoint.Administration.SPFarm.Update()&lt;br /&gt;
at Microsoft.SharePoint.Administration.SPConfigurationDatabase.RegisterDefaultDatabaseServices(SqlConnectionStringBuilder connectionString)&lt;br /&gt;
at Microsoft.SharePoint.Administration.SPConfigurationDatabase.Provision(SqlConnectionStringBuilder connectionString)&lt;br /&gt;
at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword)&lt;br /&gt;
at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, String farmUser, SecureString farmPassword)&lt;br /&gt;
at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.CreateOrConnectConfigDb()&lt;br /&gt;
at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.Run()&lt;br /&gt;
at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()&lt;/blockquote&gt;&lt;br /&gt;
Por el contrario, estaba alegremente instalando MOSS 2007 SP2 en una máquina virtual. &lt;br /&gt;
&lt;br /&gt;
Después de un rato de buscar en la red, solo se hace referencia en &lt;a href="http://connect.microsoft.com/SQLServer/feedback/details/486316/one-or-more-type-failed-to-load" target="_blank"&gt;esta entrada de Microsoft Connect.&lt;/a&gt; Que menciona que si tienes instalado Office 2010 se puede presentar este problema, y en mi caso así fué. Una vez que desinstale Office 2010 y posteriormente procedí a reintentar la instalación de MOSS 2007, esta se ejecuto sin problemas.&lt;br /&gt;
&lt;br /&gt;
Espero esta información les sea de utilidad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-661320705155921941?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/661320705155921941/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=661320705155921941&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/661320705155921941?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/661320705155921941?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2010/07/sharepoint-error-exception-of-type.html" title="[SharePoint Error] - An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_RNN0hboaSjk/TE9SV327zdI/AAAAAAAAAV8/KuAaSCwPh7c/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkcDRH48eyp7ImA9WxFaFkg.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-7593620842010132827</id><published>2010-07-18T11:16:00.000-07:00</published><updated>2010-07-20T11:21:15.073-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-20T11:21:15.073-07:00</app:edited><title>Exámenes para SharePoint 2010 liberados!</title><content type="html">Si, los exámenes para SharePoint 2010 han sido liberados oficialmente el pasado 12 de julio, con el anuncio realizado en el blog &lt;a href="http://borntolearn.mslearn.net/btl/b/weblog/archive/2010/07/12/microsoft-sharepoint-2010-exams-are-here.aspx" target="_blank"&gt;Born to Learn&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_RNN0hboaSjk/TEXn7G95RhI/AAAAAAAAAVw/9IjcVMycej8/s1600/img1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/_RNN0hboaSjk/TEXn7G95RhI/AAAAAAAAAVw/9IjcVMycej8/s400/img1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;The newest members of the  SharePoint exam family are&amp;nbsp;now available!&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="padding-left: 30px;"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-573" target="_blank" title="70-573 Certification"&gt;70-573&lt;/a&gt; -- TS: Microsoft SharePoint  2010, Application Development&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="padding-left: 30px;"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-576" target="_blank" title="70-576 Certification"&gt;70-576&lt;/a&gt; -- PRO: Designing and Developing  Microsoft SharePoint 2010 Applications&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="padding-left: 30px;"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-667" target="_blank" title="70-667"&gt;70-667&lt;/a&gt; -- TS: Microsoft SharePoint 2010, Configuring&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="padding-left: 30px;"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-668" target="_blank" title="70-668 Certification"&gt;70-668&lt;/a&gt; --&amp;nbsp;PRO: SharePoint Server 2010,  Administrator&lt;/span&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;The links will take you  the official exam pages with&amp;nbsp;audience profiles, skills measured, and  other information to help you prepare.&amp;nbsp; &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;Just getting started with  SharePoint 2010?&amp;nbsp;Find out more about&amp;nbsp;upcoming training releases and  other support from MS Learning&amp;nbsp;&lt;a href="http://www.microsoft.com/learning/en/us/training/sharepoint.aspx#2010" target="_blank" title="Microsoft Learning - SharePoint 2010"&gt;here&lt;/a&gt;: &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;All four exams  are&amp;nbsp;available&amp;nbsp;now&amp;nbsp;in English at &lt;/span&gt;&lt;a href="http://www.prometric.com/Microsoft/default.htm" target="_blank" title="Prometric"&gt;&lt;b&gt;&lt;span style="font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt;&lt;span style="color: #0066dd;"&gt;Prometric&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span style="color: #333333; font-family: 'Arial','sans-serif'; font-size: 9pt;"&gt; test centers worldwide.&amp;nbsp; Localized  versions (Japanese, German, French&amp;nbsp;and Brazilian Portuguese) are in the  works and&amp;nbsp;will be ready in early August. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-7593620842010132827?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/7593620842010132827/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=7593620842010132827&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/7593620842010132827?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/7593620842010132827?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2010/07/examenes-para-sharepoint-2010-liberados.html" title="Exámenes para SharePoint 2010 liberados!" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_RNN0hboaSjk/TEXn7G95RhI/AAAAAAAAAVw/9IjcVMycej8/s72-c/img1.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0IMSXwzeyp7ImA9Wx5SEE8.&quot;"><id>tag:blogger.com,1999:blog-4151003370208110042.post-96072649634978668</id><published>2010-06-22T10:51:00.000-07:00</published><updated>2010-08-05T08:19:48.283-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-05T08:19:48.283-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Configuracion SharePoint 2010;" /><category scheme="http://www.blogger.com/atom/ns#" term="WebCast" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010" /><title>[Webcast] - Configurar Alternate Access Mappings en SharePoint 2010</title><content type="html">Tal y como dice el título de este post, aquí dejo un webcast en el que explico y muestro como configurar los AAM (Alternate Access Mappings) en SharePoint 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_RNN0hboaSjk/TEXhrSy0QwI/AAAAAAAAAVo/8-E_aRoLEmo/s1600/img1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="386" src="http://1.bp.blogspot.com/_RNN0hboaSjk/TEXhrSy0QwI/AAAAAAAAAVo/8-E_aRoLEmo/s640/img1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Recuerden eston tres sencillos pasos:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Agregar la Url de acceso alternativo en alguna de las zonas de nuestra web application.&lt;/li&gt;
&lt;li&gt;Agregar una entrada en su respectivo servidor de DNS, con el hostheader a utilizar.&lt;/li&gt;
&lt;li&gt;Agregar un binding en el IIS utilizando el hostheader antes mencionado, aunque no lo menciono en el webcast, este paso se debe ejecutar en cada uno de los WFE's :(&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Recursos adicionales:&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/b/sharepoint/archive/2008/10/13/some-aam-guidance-from-the-front-lines.aspx"&gt;Some AAM guidance from the front lines&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/b/enterprisesearch/archive/2010/05/28/server-name-mapping-and-alternate-access-mapping-aam.aspx"&gt;Server Name Mapping and Alternate Access Mapping (AAM)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-102ea40b907accfb.office.live.com/embedicon.aspx/Blog/Videos/AAM%20en%20SP%202010.wmv" style="background-color: #fcfcfc; height: 115px; padding: 0pt; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4151003370208110042-96072649634978668?l=gerardo-reyes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://gerardo-reyes.blogspot.com/feeds/96072649634978668/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4151003370208110042&amp;postID=96072649634978668&amp;isPopup=true" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/96072649634978668?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4151003370208110042/posts/default/96072649634978668?v=2" /><link rel="alternate" type="text/html" href="http://gerardo-reyes.blogspot.com/2010/07/webcast-configurar-alternate-access.html" title="[Webcast] - Configurar Alternate Access Mappings en SharePoint 2010" /><author><name>Gerardo Reyes Ortiz</name><uri>http://www.blogger.com/profile/11637994153222622084</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_RNN0hboaSjk/TEXhrSy0QwI/AAAAAAAAAVo/8-E_aRoLEmo/s72-c/img1.png" height="72" width="72" /><thr:total>0</thr:total></entry></feed>

