Archivo de la categoría: InfoPath

Redirección a una pagina tras cerrar un formulario InfoPath en SharePoint

Una de las cosas útiles y poco conocidas es la explotación de los parámetros que utilizamos en las llamadas a formularios InfoPath embebidos en entornos SharePoint.

Un cliente, me había transmitido una duda funcional, sobre un formulario implementado en InfoPath ya que, quería que tras la finalización de este, redireccionara no a la librería de documentos al cual estaba asociado, sino a una pagina de publicación, que se había creado él.

Tras realizar unas cuantas pruebas y buscar información en La Red, volví sobre los parámetros que admite un formulario InfoPath (archivos con extensión .xsn). En esta pagina de la MSDN (Use Query Parameters to Invoke Browser-Enabled InfoPath Forms) tenemos el listado de todos los parámetros que admiten este tipo de archivos.

Revisando estos parámetros, nos encontramos con uno que es “Source“, el cual, como se indica la descripción de este, “contiene la localización a la cual redireccionará cuando el formulario se cierre, esta url debe estar en la misma colección del sitio“.

A continuación, adjunto dos ejemplos de formularios InfoPath, que tras cerrarse redireccionan a la pagina “/Pages/home.aspx“:

Una lista con un formulario InfoPath asociado, para la gestion de los datos:

http://sp/Lists/MiLista/Item/template.xsn?Source=http://sp/Pages/home.aspx&DefaultItemOpen=1

Formulario asociado a una librería de documentos ejecutado con InfoPath Form Services:

http://sp/_layouts/FormServer.aspx?XsnLocation=http://sp/Frm/fListado.xsn&SaveLocation=http://sp/Frm&Source=http://sp/Pages/home.aspx&DefaultItemOpen=1

 

Error 401 no autorizadado en InfoPath Forms Services con SharePoint 2010

Después de migrar multiples formularios InfoPath de MOSS 2007 a SPS 2010, se produce un error intermitente, cuando un formulario utiliza el Web Service: GetUserProfileByName para recuperar la información del usuario actual.

Los errores que podemos ver en los logs de Sharepoint son:

  • Data adapter failed during OnLoad: The remote server returned an error: (401) Unauthorized.
  • The following query failed: GetUserProfileByName (User: , Form Name: , … Type: DataAdapterException, Exception Message: The remote server returned an error: (401) Unauthorized. The remote server returned an error: (401) Unauthorized.)

La arquitectura que estamos usando para SharePoint es de dos nodos front-end configurados con balanceo de carga. Esto provoca que se produzaca una autenticación de doble salto (es incapaz de pasar las credenciales de usuario de un servidor a otro).

La solución ideal es configurar correctamente el balanceador de carga para evistar este problema, pero si no nos es posible, otra solución es utilizar el archivo hosts para obligar que las peticiones se realicen sobre la misma maquina y no haya doble salto de credenciales.

Para ello solo hay que añadir una entrada en el archivo hosts (c:\windows\system32\drivers\etc\hosts) de cada uno de los front-end, la direccion IP de loopback apuntando al dominio que se este usando…

Ejemplo: Si tiene dos servidores web: Servidor1 y Servidor2 en 192.168.0.1 y 192.168.0.2, la entrada del archivo de hosts para cada máquina sería:

  • Para el Servidor1:
    • 127.0.0.1 tu.dominio.sharepoint
  • Para el Servidor2:
    • 127.0.0.1 tu.dominio.sharepoint

De esta forma, cuando cada servidor haga una petición a “tu.dominio.sharepoint”, utilizará la entrada del archivo hosts y hará una petición a la misma maquina evitando el doble salto de credenciales.