¡¡ Horror con FORMDIGEST !!

22/03/2006 - 11:27 por Estrategix | Informe spam
Hola a todos, tengo un serio problema:

Trabajando con VStudio 2003, he creado una aplicación en sharepoint en la
siguiente ruta: http://mi_server/_layouts/Projects

pos bien,

resulta que tengo una página que conforma un boletín electrónico, que
inicialmente solicita un nombre de usuario y su email.

una vez recogidos los guardo en una lista, pero al hacer el update da el
siguiente error:

[COMException (0x8102006d): 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.]

Microsoft.SharePoint.Library.SPRequestInternalClass.AddOrUpdateItem(String
bstrUrl, String bstrListName, Boolean bAdd, Int32& plID, String& pbstrGuid,
String bstrVersion, Object& pvarAttachmentNames, Object&
pvarAttachmentContents) +0
Microsoft.SharePoint.Library.a.a(String A_0, String A_1, Boolean A_2,
Int32& A_3, String& A_4, String A_5, Object& A_6, Object& A_7) +49

[SPException: 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.]
Microsoft.SharePoint.Library.a.a(String A_0, String A_1, Boolean A_2,
Int32& A_3, String& A_4, String A_5, Object& A_6, Object& A_7) +86
Microsoft.SharePoint.SPListItem.Update() +591
estrategix.boletin.verBoletinInfo.guarda() in c:\archivos de
programa\archivos comunes\microsoft shared\web server
extensions\60\template\layouts\estrategixweb\boletin\verboletininfo.ascx.cs:132
estrategix.boletin.verBoletinInfo.busca() in c:\archivos de
programa\archivos comunes\microsoft shared\web server
extensions\60\template\layouts\estrategixweb\boletin\verboletininfo.ascx.cs:116
estrategix.boletin.verBoletinInfo.ImageButton1_Click(Object sender,
ImageClickEventArgs e) in c:\archivos de programa\archivos comunes\microsoft
shared\web server
extensions\60\template\layouts\estrategixweb\boletin\verboletininfo.ascx.cs:105
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +109

System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +69
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292
la página no hereda de WebPartPage, pero contiene un FormDigest.

sin embargo falla, aque puede ser debido, ya que si creo la aplicación en
una ruta administrada me funciona, pero en este caso quiero que desde
cualquier site o cualquier portal se pueda acceder a esta aplicación ( al
igual que hace SPS con las páginas de administración, etc )

Cualquier comentario será recompensado...

Asier.

Preguntas similare

Leer las respuestas

#1 Gustavo
22/03/2006 - 11:46 | Informe spam
Hola Asier,

- Supongo habras seguido las instrucciones del SDK para agregar un
FormDigest en tu pagina
(http://msdn.microsoft.com/library/d...012911.asp).
Mira tambien los dos articulos que mencionan al principio.

- Tambien puedes mirar el metodo "AllowUnsafeUpdates" de SPSite y SPWeb, a
ver si eso te permite hacer los cambios sin problemas.

- Por ultimo, si nada funciona, puedes usar los WebServices de SPS para
escribir en la Lista.

PS: Cual es la recompensa?
Suerte,
Gustavo
http://www.gavd.net/servers/default.aspx
http://blogs.clearscreen.com/skunkworks/


"Estrategix" wrote:

Hola a todos, tengo un serio problema:

Trabajando con VStudio 2003, he creado una aplicación en sharepoint en la
siguiente ruta: http://mi_server/_layouts/Projects

pos bien,

resulta que tengo una página que conforma un boletín electrónico, que
inicialmente solicita un nombre de usuario y su email.

una vez recogidos los guardo en una lista, pero al hacer el update da el
siguiente error:

[COMException (0x8102006d): 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.]

Microsoft.SharePoint.Library.SPRequestInternalClass.AddOrUpdateItem(String
bstrUrl, String bstrListName, Boolean bAdd, Int32& plID, String& pbstrGuid,
String bstrVersion, Object& pvarAttachmentNames, Object&
pvarAttachmentContents) +0
Microsoft.SharePoint.Library.a.a(String A_0, String A_1, Boolean A_2,
Int32& A_3, String& A_4, String A_5, Object& A_6, Object& A_7) +49

[SPException: 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.]
Microsoft.SharePoint.Library.a.a(String A_0, String A_1, Boolean A_2,
Int32& A_3, String& A_4, String A_5, Object& A_6, Object& A_7) +86
Microsoft.SharePoint.SPListItem.Update() +591
estrategix.boletin.verBoletinInfo.guarda() in c:\archivos de
programa\archivos comunes\microsoft shared\web server
extensions\60\template\layouts\estrategixweb\boletin\verboletininfo.ascx.cs:132
estrategix.boletin.verBoletinInfo.busca() in c:\archivos de
programa\archivos comunes\microsoft shared\web server
extensions\60\template\layouts\estrategixweb\boletin\verboletininfo.ascx.cs:116
estrategix.boletin.verBoletinInfo.ImageButton1_Click(Object sender,
ImageClickEventArgs e) in c:\archivos de programa\archivos comunes\microsoft
shared\web server
extensions\60\template\layouts\estrategixweb\boletin\verboletininfo.ascx.cs:105
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +109

System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +69
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292
la página no hereda de WebPartPage, pero contiene un FormDigest.

sin embargo falla, aque puede ser debido, ya que si creo la aplicación en
una ruta administrada me funciona, pero en este caso quiero que desde
cualquier site o cualquier portal se pueda acceder a esta aplicación ( al
igual que hace SPS con las páginas de administración, etc )

Cualquier comentario será recompensado...

Asier.

Respuesta Responder a este mensaje
#2 Estrategix
22/03/2006 - 12:19 | Informe spam
Hola Gustavo,

Lo primero gracias por el articulo, la clave estaba ahi, pero la solucion
era completamente diferente:

me explico:

yo usaba este codigo:

Correcta: SPSite site=SPControl.GetContextSite(this.Context);
Incorrecta: SPSite site=new
SPSite(ConfigurationSettings.AppSettings["appUrl"].ToString());
site.AllowUnsafeUpdates=true;
correcta: SPWeb web=site.OpenWeb().Webs["sites/boletin"];
web.AllowUnsafeUpdates=true;
SPList lista=web.Lists["ex_BoletinElectronico"];
SPListItem item=lista.Items.Add();


item.Update();

No es lo mismo usar new SPSite() en _layouts y despues atacar a la lista,
que recoger el contexto y abrir el web donde esta la lista.

No se si me explicado bien, pero prometo describirlo mejor la proxima vez.

PD: La mejor recompensa, siempre es dar sin recibir nada a cambio.
Inteantaré aportar todo mi conocimiento para ayudar al resto de los usuarios
que se están pegando con Sharepoint, e incluirlo en este foro.

Suerte para todos.
"Gustavo" wrote:

Hola Asier,

- Supongo habras seguido las instrucciones del SDK para agregar un
FormDigest en tu pagina
(http://msdn.microsoft.com/library/d...012911.asp).
Mira tambien los dos articulos que mencionan al principio.

- Tambien puedes mirar el metodo "AllowUnsafeUpdates" de SPSite y SPWeb, a
ver si eso te permite hacer los cambios sin problemas.

- Por ultimo, si nada funciona, puedes usar los WebServices de SPS para
escribir en la Lista.

PS: Cual es la recompensa?
Suerte,
Gustavo
http://www.gavd.net/servers/default.aspx
http://blogs.clearscreen.com/skunkworks/


"Estrategix" wrote:

> Hola a todos, tengo un serio problema:
>
> Trabajando con VStudio 2003, he creado una aplicación en sharepoint en la
> siguiente ruta: http://mi_server/_layouts/Projects
>
> pos bien,
>
> resulta que tengo una página que conforma un boletín electrónico, que
> inicialmente solicita un nombre de usuario y su email.
>
> una vez recogidos los guardo en una lista, pero al hacer el update da el
> siguiente error:
>
> [COMException (0x8102006d): 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.]
>
> Microsoft.SharePoint.Library.SPRequestInternalClass.AddOrUpdateItem(String
> bstrUrl, String bstrListName, Boolean bAdd, Int32& plID, String& pbstrGuid,
> String bstrVersion, Object& pvarAttachmentNames, Object&
> pvarAttachmentContents) +0
> Microsoft.SharePoint.Library.a.a(String A_0, String A_1, Boolean A_2,
> Int32& A_3, String& A_4, String A_5, Object& A_6, Object& A_7) +49
>
> [SPException: 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.]
> Microsoft.SharePoint.Library.a.a(String A_0, String A_1, Boolean A_2,
> Int32& A_3, String& A_4, String A_5, Object& A_6, Object& A_7) +86
> Microsoft.SharePoint.SPListItem.Update() +591
> estrategix.boletin.verBoletinInfo.guarda() in c:\archivos de
> programa\archivos comunes\microsoft shared\web server
> extensions\60\template\layouts\estrategixweb\boletin\verboletininfo.ascx.cs:132
> estrategix.boletin.verBoletinInfo.busca() in c:\archivos de
> programa\archivos comunes\microsoft shared\web server
> extensions\60\template\layouts\estrategixweb\boletin\verboletininfo.ascx.cs:116
> estrategix.boletin.verBoletinInfo.ImageButton1_Click(Object sender,
> ImageClickEventArgs e) in c:\archivos de programa\archivos comunes\microsoft
> shared\web server
> extensions\60\template\layouts\estrategixweb\boletin\verboletininfo.ascx.cs:105
> System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +109
>
> System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +69
> System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
> sourceControl, String eventArgument) +18
> System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
> System.Web.UI.Page.ProcessRequestMain() +1292
> la página no hereda de WebPartPage, pero contiene un FormDigest.
>
> sin embargo falla, aque puede ser debido, ya que si creo la aplicación en
> una ruta administrada me funciona, pero en este caso quiero que desde
> cualquier site o cualquier portal se pueda acceder a esta aplicación ( al
> igual que hace SPS con las páginas de administración, etc )
>
> Cualquier comentario será recompensado...
>
> Asier.
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida