« Les mises à jour sont actuellement refusées sur les requêtes GET » erreur la création d'une collection de sites

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

  •  16-10-2019
  •  | 
  •  

Question

J'utilise SharePoint Server 2007 Enterprise avec Windows Server 2008 Enterprise. J'ai déployé un portail d'édition. Je développe une application web ASP.Net utilisant VSTS 2008 + C # .Net + 3.5 + ASP.Net + SharePoint Server SDK 2007.

Voici mes extraits de code et je me suis erreur - « Les mises à jour sont actuellement sur les demandes de déduction est refusée GET ». Toute idée comment fixer?

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);
            }
        }

Mise à jour 1: J'ai rencontré la même erreur avec le code suivant,

        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");
Était-ce utile?

La solution

Sachez que SPSite a également une propriété AllowUnsafeUpdates que vous pouvez essayer.

Si vous modifiez ce, faites-le dans un try / finally de sorte que vous êtes sûr de ne pas rendre votre site vounerable aux attaques de script côté cross (il semblerait à partir de votre exemple de code que vous avez déjà contourné la protection XSS de tous vos sous-sites, vous pouvez activer à nouveau ça!).

Finalement, la propriété AllowUnsafeUpdates sera remis à sa valeur par défaut (toute opération qui appel SPWeb.Invalidate () entre autres), mais en attendant votre site sera sujette à des attaques XSS.

Autres conseils

Je pense que vous devez définir AllowUnsafeUpdates sur le Web qui invoque ce code.

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

... do your work here

SPContext.Current.Web.AllowUnsafeUpdates = currentSetting;

Si vous voulez vraiment faire cela avec un GET-demande, l'exécution 'SPUtility.ValidateFormDigest () devrait également faire l'affaire, sans avoir besoin de toucher la propriété AllowUnsafeUpdates (qui est vraiment quelque chose que vous devriez éviter, à mon avis)

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top