SharePoint 2013: Como probar una aplicación Provider-Hosted sin desplegarla!

Si el otro día comentaba como depurar una aplicación para SharePoint de tipo Autohosted, en esta ocasión vamos a ver como probar una aplicación de tipo Provider-Hosted sin tener que desplegarla en el proveedor (en Windows Azure por ejemplo). Para ello, vamos a seguir las pautas que podéis ver en este artículo de MSDN. Al lío pues:

  • En Visual Studio 2012, creamos un proyecto de tipo Aplicación para SharePoint 2013.
  • En el asistente de configuración especificamos la Url del sitio de SharePoint 2013 On-Premise u Online qué usaremos para depurar o bien para desplegar la aplicación. En mi caso, he indicado la Url de un sitio de desarrollador de SharePoint Online. Indicamos también el tipo de hosting que en este caso es “Hospedada por el proveedor” (Provider-Hosted).
  • Revisamos la estructura de la solución, veremos que consta de dos proyectos: el de la aplicación de SharePoint y el proyecto web (ASP.NET).
image image image
  • Lo siguiente que tendremos que hacer es programas nuestra aplicación como necesitemos. Por ejemplo, podemos modificar tanto el aspecto gráfico de la página Default.aspx como la lógica de la misma. Por ejemplo, en este caso en el Page_Load() de la página se ha añadido el código necesario para acceder al conjunto de listas del sitio en el qué se está agregando la aplicación.
   1:              var contextToken =
   2:              TokenHelper.GetContextTokenFromRequest(Page.Request);
   3:              var hostWeb = Page.Request["SPHostUrl"];
   4:   
   5:              using (var clientContext =
   6:                    TokenHelper.GetClientContextWithContextToken(hostWeb,
   7:                          contextToken, Request.Url.Authority))
   8:              {
   9:                  clientContext.Load(clientContext.Web.Lists,
  10:                        lists => lists.Include(
  11:                        list => list.Title,
  12:                        list => list.DefaultViewUrl)
  13:                  );
  14:                  clientContext.ExecuteQuery();
  15:                  AppWebLists.DataSource = clientContext.Web.Lists;
  16:                  AppWebLists.DataBind();
  17:              }     

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

  • Y ahora viene lo importante: ¿Cómo depuramos la aplicación? Pues pulsando F5 en Visual Studio :P, de manera que se lanza el navegador y en este caso se muestra en primer lugar el inicio de sesión de Office 365.
  • A continuación, se muestra la aplicación completamente operativa. Fijaros en qué la Url de la misma es https://localhost:<NumeroPuerto&gt;, es decir, la aplicación se está ejecutando en nuestro entorno de desarrollo local…coool!
image image

Para finalizar, os dejo algunos ejemplos de despliegue de aplicaciones Provider-Hosted en Azure: