Importera data från en installation tillen annan

Vote:
 
Hej! Mitt egentliga problem: Jag har satt upp en ny testmiljö, för att göra det enkelt för mig att utveckla och testa denna webb vill jag ha dessa testmiljön och skarpa webbplatsen skall vara så identiska som möjligt. Hur kopierar jag en miljö till en annan på enklaste sätt(sidor & sidtyper)? Båda miljöerna är EPiServer 4.41 Jag har i tidigare installation (4.11) kopierat alla aspx sidor och sedan manuellt satt sidegenskaper + lagt in lite dummydata = inte smidigt. Men i.o.m att det numera finns import/export funktion i admin tänkte jag att jag skulle kunna använda mig av denna. Problemet då blev dock att när man försöker importera(sidor & sidtyper) en webb på ca 50Mb så får man ett; "Exception Details: System.Web.HttpException: Maximum request length exceeded.", har även försökt dela upp det i lite mindre delar genom att importera en avdelning åt gången men även detta misslyckas då dem också ligger på någon Mb. Finns det något enklare sätt att göra detta? Kan man scripta en viss tabell och köra in denna direkt i databasen (för att sedan importera mallsidorna via gränssnittet separat)? Hur gör ni? Tack på förhand! Vänliga hälsningar, Tony H
#12214
Mar 25, 2008 18:34
Vote:
 
Jag har en gissning. Det går väl ställa in hur stor uppladdningsfilen får vara. Tror man gör detta i iis:en. Normalt sett är den begränsad till typ 5mb. Om du ökar till 50 mb så går det kanske bättre. /Seb
#13847
Mar 25, 2008 18:43
Vote:
 
Tack Seb! Jag skall testa detta... Men är det någon som kan beskriva hur ni jobbar med EPiServer för att få det att fungera bra med en testmiljö och en skarp miljö. Hur uppdaterar ni skarpa miljön, flyttar ni över kompilerade filer till skarp miljö efter tester (bin-filer)? Tack på förhand! // Tony
#13848
Mar 25, 2008 18:43
Vote:
 
Hei, jeg fikk samme feilmeldingen med en fil på 6MB. Fant ut at default opplastingsstørrelse er 4096 KB. Denne størrelsen kan økes i elementet i C:\WINDOWS\Microsoft.NET\Framework\\config\machine.config Problemet nå er at det ser ut som om internet explorer timer ut. Den står og går lenge før den ender opp med "Page can not be displayed" Er det noen som har bedre ideer om hvordan dette kan gjøres? F.eks et commandline-verktøy for import/export som går direkte mot databasen?
#13849
Mar 25, 2008 18:43
Vote:
 
You can export directly to file, by using the Enterprise API. I've successfully exported a 300 MB file using this technique. The same goes for the import process. Create a new .aspx file, inside the form tag, paste this code:

Enter the id (numeric) of the page you want to export child pages from.
Note! The process can take some time to run, be patient.

ID of Parent:

The exported file will be saved to: "/upload/exported.epi4"

In the code behind file, hook up the cmdExport button: private void InitializeComponent() { this.cmdExport.Click += new System.EventHandler(this.cmdExport_Click); this.Load += new System.EventHandler(this.Page_Load); } In Page_Load, you can set the timeout: private void Page_Load(object sender, System.EventArgs e) { // Script timeout 1 hour this.Server.ScriptTimeout = 3600; } The main part is the export process: private void cmdExport_Click(object sender, System.EventArgs e) { int id = int.Parse(txtIdOfParent.Text); PageReference pageRef = new PageReference(id); PageData PageRoot = Global.EPDataFactory.GetPage(pageRef); DataExporter exporter = new DataExporter(); exporter.AllowPageSync = true; exporter.IgnorePageHierarchy = false; // We need to add all pages, but we add them as pagereferences, not pagedata objects as they will be // loaded as raw pages. PageReferenceCollection childRefCol = new PageReferenceCollection(); PageDataCollection childPages = EPiServer.Global.EPDataFactory.GetChildren(pageRef, AccessControlList.NoAccess); foreach(PageData pd in childPages) childRefCol.Add(pd.PageLink); PageReference[] childs = childRefCol.ToArray(); childRefCol = null; // This runs faster, but uses undocumentet features, which could change in a later version //PageReference[] childs = new EPiServer.DataAccess.PageListDB().ListAll(pageRef); PageReference rootPage = PageRoot.PageLink; rootPage.LoadRawPageData = true; exporter.DestinationPages.Add(Global.EPDataFactory.GetPage(rootPage, AccessControlList.NoAccess)); foreach(PageReference pageReference in childs) { PageReference loadRaw = pageReference; loadRaw.LoadRawPageData = true; exporter.DestinationPages.Add(EPiServer.Global.EPDataFactory.GetPage(loadRaw, AccessControlList.NoAccess)); } FileStream strm = new FileStream(HttpContext.Current.Server.MapPath("~/upload/exported.epi4"), FileMode.CreateNew); exporter.Stream = strm; exporter.Export(); strm.Close(); lblStatus.Text += "Done
"; foreach(string str in exporter.ProgressLog) lblStatus.Text += str + "
"; }
You also need the following namespaces: using EPiServer; using EPiServer.Core; using EPiServer.DataAccess; using EPiServer.Enterprise; using EPiServer.Security; using System.IO; /Steve
#13850
Mar 25, 2008 18:43
Vote:
 
You can change the following parameters in machine.config Both executionTimeout and maxRequestLength It worked for me when I got this problem. /jesper
#13851
Mar 25, 2008 18:43
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.