“Gli aggiornamenti sono attualmente consentiti sulle richieste GET” errore durante la creazione di una raccolta siti

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/1594

  •  16-10-2019
  •  | 
  •  

Domanda

Sto usando Enterprise SharePoint Server 2007 con Windows Server 2008 Enterprise. Ho schierato un portale editoriale. Sto sviluppando un'applicazione web ASP.Net con VSTS 2008 + C # .Net 3.5 + + + ASP.Net SharePoint Server 2007 SDK.

Ecco i miei frammenti di codice ed ho ottenuto l'errore - "Gli aggiornamenti sono attualmente ha invalidato su richieste GET". Delle idee come risolvere?

Microsoft.SharePoint.SPException: Updates are currently disallowed on GET requests. To allow updates on a GET, set the 'AllowUnsafeUpdates' property on SPWeb.

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                SPWebApplication webApp = SPContext.Current.Site.WebApplication;
                SPSiteCollection siteCollections = webApp.Sites;
                foreach (SPSite item in siteCollections)
                {
                    SPWeb webItem = item.OpenWeb();
                    webItem.AllowUnsafeUpdates = true;
                }

                SPSite newSiteCollection = siteCollections.Add("sites/myblog",
                    "New Sample Site", "New Sample Site Description", 1033, "BLOG#0",
                    "foo\\foouser", "Owner name", "owneremail@foo.com");
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString() + "\t" + ex.StackTrace);
            }
        }

Aggiornamento 1: che ho incontrato con lo stesso errore con il seguente codice,

        SPContext.Current.Web.AllowUnsafeUpdates = true;
        SPWebApplication webApp = SPContext.Current.Site.WebApplication;
        SPSiteCollection siteCollections = webApp.Sites;
        /*
        foreach (SPSite item in siteCollections)
        {
            SPWeb webItem = item.OpenWeb();
            webItem.AllowUnsafeUpdates = true;
        }
        */
            SPSite newSiteCollection = siteCollections.Add("sites/myblog",
                "New Sample Site", "New Sample Site Description", 1033, "BLOG#0",
                "foo\\foouser", "Owner name", "owneremail@foo.com");
È stato utile?

Soluzione

Si tenga presente che SPSite ha anche una proprietà AllowUnsafeUpdates che si può provare.

Se si modifica questo, farlo all'interno di un try / finally in modo che si è sicuri di non fare il vostro vounerable sito ad attacchi di scripting cross-laterali (sembrerebbe dal vostro esempio di codice che avete già scavalcato la protezione XSS da tutto i tuoi sotto-siti, quindi si potrebbe desiderare di consentire ancora una volta che!).

Alla fine la proprietà AllowUnsafeUpdates sarà ripristinato al suo valore di default (qualsiasi operazione che chiamata SPWeb.Invalidate () tra gli altri), ma fino ad allora il vostro sito sarà soggetto ad attacchi XSS.

Altri suggerimenti

Credo che avete bisogno di AllowUnsafeUpdates set sul web che invoca questo codice.

bool currentSetting = SPContext.Current.Web.AllowUnsafeUpdates;
SPContext.Current.Web.AllowUnsafeUpdates = true;

... do your work here

SPContext.Current.Web.AllowUnsafeUpdates = currentSetting;

Se si vuole veramente fare questo con un GET-richiesta, l'esecuzione di 'SPUtility.ValidateFormDigest ()' dovrebbe anche fare il trucco, senza bisogno di toccare la proprietà AllowUnsafeUpdates (che in realtà è qualcosa che si dovrebbe evitare, a mio parere)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top