Error de validación de seguridad

22/04/2009 - 13:54 por laura | Informe spam
Hola,
Hemos desarrollado una aplicación web para generar y configurar nuevos
portales de MOSS (colecciones de sitios y sitios) y todo va bien, excepto un
error que nos ocurre repetidamente en el momento de la creación del portal:
*******************
"La validación de seguridad de esta página no es correcta. Haga clic en
Atrás en el explorador Web, actualice la página y vuelva a intentar la
operación.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual.
Revise el seguimiento de la pila para obtener más información acerca del
error y dónde se originó en el código.

Detalles de la excepción: System.Runtime.InteropServices.COMException: La
validación de seguridad de esta página no es correcta. Haga clic en Atrás en
el explorador Web, actualice la página y vuelva a intentar la operación."
********************

Reseteando el IIS se soluciona, pero necesitamos que deje de reproducirse el
error sin tener que forzar el iisreset.


Hemos probado todo lo que hemos encontrado por google, como el uso de
AllowUnsafeUpdates y FormDigest, pero sigue fallando



copio código:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(SiteURL))
{
site.AllowUnsafeUpdates = true;
using (SPWeb web = site.OpenWeb())
{
SPWebApplication webApp = web.Site.WebApplication;
webApp.FormDigestSettings.Enabled = false;
web.AllowUnsafeUpdates = true;
web.Update();
webApp.Sites.Add(
url,
titulo,
descripcion,
idioma,
plantilla,
propietario,
nombre,
mail);
web.AllowUnsafeUpdates = false;
web.AlternateCssUrl = cssURL;
web.Update();
web.Dispose();
webApp.FormDigestSettings.Enabled = true;
}
site.AllowUnsafeUpdates = false;
}
});
-
y en la aspx:

<%@ Register Tagprefix="SharePoint"
Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint,
Version.0.0.0, Culture=neutral, PublicKeyTokenqe9bce111e9429c" %>


<form id="form1" runat="server" method="post">
<SharePoint:FormDigest ID="FormDigest1" runat="server"/>
-


Muchísimas gracias por adelantado a quien nos pueda prestar una ayuda.
 

Leer las respuestas

#1 Gustavo
22/04/2009 - 22:21 | Informe spam
Hola Laura,
El RunWithElevatedPrivileges usa la cuenta del grupo de aplicaciones
(Application Pool en IIS) para ejecutar el codigo. Asegurate que esta cuenta
tiene suficientes derechos para hacer lo que deseas (crear aplicaciones web,
por ejemplo).
Suerte,
Gustavo
http://www.gavd.net/servers/default.aspx
http://geeks.ms/blogs/gvelez/


"laura" wrote:

Hola,
Hemos desarrollado una aplicación web para generar y configurar nuevos
portales de MOSS (colecciones de sitios y sitios) y todo va bien, excepto un
error que nos ocurre repetidamente en el momento de la creación del portal:
*******************
"La validación de seguridad de esta página no es correcta. Haga clic en
Atrás en el explorador Web, actualice la página y vuelva a intentar la
operación.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual.
Revise el seguimiento de la pila para obtener más información acerca del
error y dónde se originó en el código.

Detalles de la excepción: System.Runtime.InteropServices.COMException: La
validación de seguridad de esta página no es correcta. Haga clic en Atrás en
el explorador Web, actualice la página y vuelva a intentar la operación."
********************

Reseteando el IIS se soluciona, pero necesitamos que deje de reproducirse el
error sin tener que forzar el iisreset.


Hemos probado todo lo que hemos encontrado por google, como el uso de
AllowUnsafeUpdates y FormDigest, pero sigue fallando



copio código:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(SiteURL))
{
site.AllowUnsafeUpdates = true;
using (SPWeb web = site.OpenWeb())
{
SPWebApplication webApp = web.Site.WebApplication;
webApp.FormDigestSettings.Enabled = false;
web.AllowUnsafeUpdates = true;
web.Update();
webApp.Sites.Add(
url,
titulo,
descripcion,
idioma,
plantilla,
propietario,
nombre,
mail);
web.AllowUnsafeUpdates = false;
web.AlternateCssUrl = cssURL;
web.Update();
web.Dispose();
webApp.FormDigestSettings.Enabled = true;
}
site.AllowUnsafeUpdates = false;
}
});
-
y en la aspx:

<%@ Register Tagprefix="SharePoint"
Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint,
Version.0.0.0, Culture=neutral, PublicKeyTokenqe9bce111e9429c" %>


<form id="form1" runat="server" method="post">
<SharePoint:FormDigest ID="FormDigest1" runat="server"/>
-


Muchísimas gracias por adelantado a quien nos pueda prestar una ayuda.

Preguntas similares