Domanda

Voglio fare quanto segue.Se un utente arriva a una raccolta di siti speciale, verrà reindirizzato a un ribelli.Se il sottostviamento non esiste, verrà creato.

So che è una creazione in un arrampicata e ho già testato tutto da AllowunSafeupdates di convalidareformDigest ma nulla creerà il sito per me.Dovrei essere qualcosa come il mysitehost.

Hai un'idea come farlo?

È stato utile?

Soluzione

Create a custom 404 page for your site collection, then either add code behind to it with your own logic as when you want to create a subsite and when not..

OR in SharePoint 2013 create a custom error page, add a content editor webpart to it, and some javscript code which will create a subsite for you, but there is a lot of things that you will require to set e.g. subsite name, url etc...

Altri suggerimenti

I've stolen from the mysitehost. There the mysite is create with this mechanic:

 if (Page.IsPostBack)
 {
   SPLongOperation operation = new SPLongOperation(this.Page);
   operation.LeadingHTML = "Meeting wird erstellt";
   operation.Begin();
   SPUtility.ValidateFormDigest();

   Do site creation ...

   operation.End(currentMeeting.Url);
 }

 // This code sets an reloadAsPostBack on the site to begin site creation
 SPPageContentManager.RegisterClientScriptBlock(this.Page, base.GetType(), 
                      "CreateMySiteRepost", "document.forms[0].submit();");

When the page is loaded with GET Request then it will be posted by client code. Then you have a POST Request.

You can try setting the current HTTPContext as null, this way sharepoint does not recognise that it is a GET Request. Please see the below code, which worked for me:

using (SPSite site = new SPSite(SPContext.Current.Site.Url))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        HttpContext tempContext = HttpContext.Current;//create back up of context.
                       HttpContext.Current = null;//Set current context as null
                        try
                        {

                            web.AllowUnsafeUpdates = true;
                            SPWeb newWeb = web.Webs.Add("sitename", "sitename", "description", (uint)1033, "STS#0", false, false);
                            web.Update();
                        }
                        catch (Exception Ex)
                        {
                            lblMessge.Text = Ex.Message;
                        }
                        finally
                        {
                            web.AllowUnsafeUpdates = false;
                            HttpContext.Current = tempContext;//Restore the context

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