Cuando se conecta a un servicio web utilizando un formulario InfoPath 2010 que contiene código de espacio aislado, los datos que se devuelven no son correctos o recibe un mensaje de error


Síntomas


Tiene una plantilla de formulario de Microsoft InfoPath 2010 que tiene una conexión de datos a un servicio web. Al conectarse al servicio web, puede encontrarse con uno de los problemas siguientes:
  • Los datos devueltos por el servicio web son incorrectos.
  • Aparece el mensaje de error siguiente:
    Error al obtener acceso a un origen de datos.

    Se ha agregado una entrada al registro de eventos de Windows del servidor.

    Id. de registro:5566
Estos problemas se producen cuando se cumplen las condiciones siguientes:
  • El servicio web utiliza la identidad del usuario que rellena el formulario.
  • La plantilla de formulario de InfoPath 2010 contiene código de espacio aislado y se publica en un sitio web de Microsoft SharePoint Server 2010.

    Nota El código del formulario de InfoPath se ejecuta usando el Servicio de código de espacio aislado de SharePoint Foundation si la opción Plantilla de formulario aprobada por el administrador (avanzado) no está activada cuando se publica el formulario.

Causa


Una plantilla de formulario de InfoPath 2010 que contiene código de espacio aislado se implementa utilizando el Servicio de código de espacio aislado de SharePoint Foundation, que utiliza el proceso SPUCWorkerProcess en lugar del proceso W3WP. Cuando el formulario llama al servicio web, InfoPath Forms Services delega la solicitud al proceso SPUCWorkerProcess. Este proceso no puede utilizar la identidad del usuario que está rellenando el formulario. En su lugar, el proceso utiliza la identidad de la cuenta que ejecuta el Servicio de código de espacio aislado de SharePoint Foundation. La cuenta la especifica el administrador del conjunto de servidores. Por tanto, las autenticaciones web se basan en la identidad del proceso SPUCWorkerProcess. Sin embargo, si la cuenta especificada por el administrador del conjunto de servidores no obtiene acceso al servicio web, se produce el mensaje de error.

Nota InfoPath Forms Services intenta ejecutar una solicitud en el proceso W3WP cuando InfoPath Forms Services determina que no debe ejecutarse ningún código de espacio aislado para una solicitud determinada. Sin embargo, si hay acciones en cascada que puedan causar la ejecución de código de espacio aislado, la solicitud se delega al Servicio de código de espacio aislado de SharePoint Foundation y al proceso SPUCWorkerProcess.

Solución


Para resolver este problema, utilice uno de los métodos siguientes.

Método 1

Volver a implementar el formulario de espacio aislado como un formulario aprobado por el administrador. Para realizar esta tarea, siga estos pasos:
  1. Abra el formulario de InfoPath 2010 en el modo de diseño en InfoPath Designer 2010.
  2. En el menú Archivo, haga clic en Publicar.
  3. Haga clic en SharePoint Server.
  4. Siga las instrucciones del Asistente para la publicación para finalizar la publicación. Asegúrese de que la opción Plantilla de formulario aprobada por el administrador (avanzado) está activada.
  5. Abra el Administrador central de SharePoint 2010 en un servidor de SharePoint Server 2010 con InfoPath Forms Services habilitado.
  6. En Administración central, haga clic en Configuración de aplicación general.
  7. En InfoPath Forms Services, haga clic en Cargar plantilla de formulario.
  8. Haga clic en Examinar, busque la plantilla de formulario de InfoPath 2010 y, a continuación, haga clic en Abrir.
  9. Haga clic en Cargar y, después, haga clic en Aceptar.
  10. Haga clic en Configuración de aplicación general, en InfoPath Forms Services, haga clic en Administrar plantillas de formulario.
  11. Haga clic en el nombre de la plantilla que ha cargado y, a continuación, haga clic en Activar para una colección de sitios.
  12. Haga clic en la lista desplegable Colección de sitios y, a continuación, haga clic en Cambiar colección de sitios.
  13. Seleccione la dirección URL de la colección de sitios en donde desea activar la plantilla de formulario y, a continuación, haga clic en Aceptar dos veces.
  14. Abra la colección de sitios en donde ha activado la plantilla de formulario.
  15. Cree una nueva biblioteca de formularios en el sitio.
  16. En la pestaña Biblioteca, haga clic en Configuración de la biblioteca.
  17. En la sección Configuración general, haga clic en Configuración avanzada.
  18. Establezca Permitir la administración de tipos de contenido en y, a continuación, haga clic en Aceptar.
  19. En la página Configuración de bibliotecas de formularios, haga clic en Agregar a partir de tipos de contenido de sitio.
  20. Haga clic en la plantilla de formulario que ha activado, haga clic en Agregar y, a continuación, en Aceptar.
  21. Haga clic sucesivamente en Formulario, en Eliminar este tipo de contenido y en Aceptar.
  22. Abra la biblioteca de formularios. En la pestaña Documentos, haga clic en Nuevo documento y, a continuación, haga clic en el nombre de plantilla del formulario.
Método 2

Utilice el servicio de almacenamiento seguro de SharePoint Server 2010 para almacenar credenciales alternativas para la conexión de datos.

La autenticación del servicio de almacenamiento seguro funciona almacenando un nombre de usuario y una contraseña en una base de datos cifrada. Cuando InfoPath Forms Services solicita autenticaciones del servicio de almacenamiento seguro en nombre de un usuario, el servicio de almacenamiento seguro realiza una autenticación individual o autenticación de grupo. Para la autenticación individual, el servicio de almacenamiento seguro comprueba que el usuario solicitado tiene una entrada en la base de datos del servicio. Para la autenticación de grupo, el servicio de almacenamiento seguro comprueba que el usuario es miembro de una entrada de grupo. Cuando el usuario se valida, el servicio de almacenamiento seguro devuelve las credenciales apropiadas. A continuación, InfoPath Forms Services utiliza esas credenciales para suplantar al usuario. Por tanto, el servicio web considera que el usuario está especificado en la base de datos del servicio de almacenamiento seguro incluso si el usuario especificado no es el usuario real.

Nota Los pasos siguientes asumen que la conexión de datos de la plantilla del formulario usa un archivo UDCX en una biblioteca de conexiones de datos. Para obtener más información sobre cómo crear y usar una biblioteca de conexiones de datos en Microsoft Office SharePoint Server 2007, visite el siguiente sitio web de Microsoft Developer Network (MSDN):Para usar el servicio de almacenamiento seguro para almacenar credenciales alternativas para la conexión de datos, siga estos pasos:
  1. Cree una nueva aplicación de destino del servicio de almacenamiento seguro y, a continuación, agregue la información de cuenta. Para realizar esta tarea, siga estos pasos:
    1. Abra el administrador central de SharePoint 2010.
    2. Haga clic en Administración de aplicaciones y, a continuación, haga clic en Administrar aplicaciones de servicio.
    3. Haga clic en Servicio de almacenamiento seguro.
    4. Haga clic en Nuevo. Siga las instrucciones de la página Crear nueva aplicación de destino de almacenamiento seguro para configurar las opciones de aplicación de destino. Anote la cadena que especifica en el cuadro de Id. de aplicación de destino.

      Nota Asegúrese de que se genera una nueva clave antes de crear una nueva aplicación de destino del servicio de almacenamiento seguro.
    5. Seleccione el nombre de la aplicación de destino que acaba de crear y, a continuación, seleccione Establecer credenciales en la lista desplegable.
    6. Especifique la información de cuenta para la aplicación de destino del servicio de almacenamiento seguro y haga clic en Aceptar.
  2. Utilice la aplicación de destino del servicio de almacenamiento seguro en las conexiones de datos. Para realizar esta tarea, siga estos pasos:
    1. Descargue una copia del archivo UDCX especificado para la conexión de datos.
    2. Utilice el Bloc de notas para abrir el archivo UDCX.
    3. Busque la sección <udc:Authentication> y, a continuación, reemplácela con lo siguiente:
      <udc:Authentication>
      <udc:SSO AppId='TestSSOGroup' CredentialType='NTLM'/>
      </udc:Authentication>
    4. Cambie el valor del atributo AppId a la cadena Id. de aplicación de destino que anotó anteriormente.
    5. Guarde el archivo en el Bloc de notas.
    6. Cargue el archivo UDCX actualizado en la biblioteca de conexiones de datos de SharePoint. A continuación, apruebe el archivo.
    7. Reinicie el servidor de SharePoint Server 2010.
  3. Abra el formulario de espacio aislado de InfoPath 2010 en un explorador web.
Método 3

Indique explícitamente las credenciales del archivo UDC. Para ello, reemplace la sección <udc:Authentication> del archivo UDCX con el código siguiente:
<udc:Authentication>
<udc:UseExplicit CredentialType="NTLM">
<udc:UserId></udc:UserId>
<udc:Password></udc:Password>
</udc:UseExplicit>
</udc:Authentication>
Este método es menos seguro que el método 2.

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".