public ViewResult ImportResult() { var m = TempData["BlogML-AdminProgressModel"] as AdminProgressModel; if (m == null) m = new AdminProgressModel() { ProcessName = "BlogML Import", ProgressUrl = Url.Action("ImportProgress") }; return View("AdminProgress", "Admin", m); }
public ActionResult Import(BlogMLModel m) { //validate input try { HttpPostedFileBase blogml = null; if (blogml == null && Request.Files.Count > 0) blogml = Request.Files[0]; var coll = AppService.GetCollection(new Uri(m.EntryCollectionId)); if (string.IsNullOrEmpty(m.PagesCollectionId)) m.PagesCollectionId = null; if (string.IsNullOrEmpty(m.MediaCollectionId)) m.MediaCollectionId = null; if (string.IsNullOrEmpty(m.ImportMode)) m.ImportMode = "Merge"; if (blogml == null || blogml.ContentLength < 10) throw new Exception("Please post a valid BlogML file."); BlogMLBlog blog = null; using (XmlReader r = new XmlTextReader(blogml.InputStream)) { blog = BlogMLSerializer.Deserialize(r); } AdminProgressModel model = new AdminProgressModel() { ProcessName = "BlogML Import" }; model.Messages.Add("BlogML file parsed successfully"); //launch a new thread new Thread(() => BlogMLService.Import(m.EntryCollectionId, m.PagesCollectionId, m.MediaCollectionId, (ImportMode)Enum.Parse(typeof(ImportMode), m.ImportMode), blog)) { IsBackground = true }.Start(); //ThreadPool.QueueUserWorkItem((s) => Import(s), state); model.ProgressUrl = Url.Action("ImportProgress"); TempData["BlogML-AdminProgressModel"] = m; return RedirectToAction("ImportResult"); } catch (Exception ex) { LogService.Error(ex); TempData["error"] = ex.Message; Session["BlogMLModel"] = m; return RedirectToAction("Tools", "Admin"); } }