private void wzdInstaller_ActiveStepChanged(object sender, EventArgs e)
    {
        switch (wzdInstaller.ActiveStepIndex)
        {
        case 1:
            break;

        // Finish step
        case 5:
            // Set current user default culture of the site
            LocalizationContext.PreferredCultureCode = SettingsKeyInfoProvider.GetValue(SiteName + ".CMSDefaultCultureCode");

            // Ensure virtual path provider registration if enabled
            VirtualPathHelper.RegisterVirtualPathProvider();

            // Check whether virtual path provider is running
            if (!VirtualPathHelper.UsingVirtualPathProvider)
            {
                btnWebSite.Text            = ResHelper.GetFileString("Install.lnkMediumTrust");
                lblMediumTrustInfo.Visible = true;
            }
            else
            {
                btnWebSite.Text = ResHelper.GetFileString("Install.lnkWebsite");
            }
            break;
        }
    }
Exemple #2
0
        /// <summary>
        /// 获取指定虚拟路径的 HTML 处理程序
        /// </summary>
        /// <param name="virtualPath">要获取 HTML 处理程序的虚拟路径</param>
        /// <returns>HTML 处理程序</returns>
        public static IHtmlHandler GetHandler(string virtualPath)
        {
            var services = WebServiceLocator.GetServices <IHtmlHandlerProvider>(virtualPath);

            foreach (var provider in services)
            {
                var handler = provider.GetHandler(virtualPath);

                if (handler != null)
                {
                    return(handler);
                }
            }


            if (!HostingEnvironment.VirtualPathProvider.FileExists(virtualPath))//如果文件不存在,则直接返回 null 。
            {
                return(null);
            }


            return
                (GetHandlerInternal <IHtmlHandler>(virtualPath + ".ashx") ??
                 GetHandlerInternal <IHtmlHandler>(GetHandlerPath(virtualPath)) ??
                 GetHandlerInternal <IHtmlHandler>(VirtualPathHelper.FallbackSearch(virtualPath, "_handler.ashx")));
        }
Exemple #3
0
        /// <summary>解析模板虚拟路径</summary>
        /// <param name="context">上下文环境</param>
        /// <param name="templateValue">模板信息</param>
        /// <returns></returns>
        public string ParseTemplateVirtualPath(VelocityContext context, string virtualPath)
        {
            string templateValue = null;

            if (VelocityConfigurationView.Instance.TemplateCacheMode == "ON")
            {
                lock (lockDictionaryObject)
                {
                    if (dictionary.ContainsKey(virtualPath))
                    {
                        templateValue = dictionary[virtualPath];
                    }
                    else
                    {
                        templateValue = File.ReadAllText(VirtualPathHelper.GetPhysicalPath(virtualPath));

                        dictionary.Add(virtualPath, templateValue);
                    }
                }
            }
            else
            {
                templateValue = File.ReadAllText(VirtualPathHelper.GetPhysicalPath(virtualPath));
            }

            return(Evaluate(context, templateValue));
        }
        /// <summary>
        /// 获取视图处理程序
        /// </summary>
        /// <param name="virtualPath">视图的虚拟路径</param>
        /// <param name="includeDefaultHandler">是否要查找默认视图处理程序</param>
        /// <returns>该虚拟路径的视图处理程序</returns>
        internal static IViewHandler GetViewHandlerInternal(string virtualPath, bool includeDefaultHandler)
        {
            var handler = GetHandlerInternal(virtualPath);

            if (handler == null && !includeDefaultHandler)
            {
                handler = GetHandlerInternal(VirtualPathHelper.FallbackSearch(virtualPath, "_handler.ashx"));
            }

            return(handler ?? new ViewHandler());
        }
        /// <summary>保存配置信息</summary>
        public void Save()
        {
            string path = null;

            if (HttpContext.Current == null)
            {
                path = string.Format("{0}.config", Process.GetCurrentProcess().MainModule.FileName);
            }
            else
            {
                path = VirtualPathHelper.GetPhysicalPath("~/web.config");
            }

            this.Serialize(path, KernelConfiguration.SectionName, this);
        }
Exemple #6
0
        public void TestCombine()
        {
            string url = string.Empty;

            url = VirtualPathHelper.Combine("http://www.kanf.cn", "issue/");

            Assert.AreEqual(url, "http://www.kanf.cn/issue/");

            url = VirtualPathHelper.Combine("http://www.kanf.cn/", "issue/");

            Assert.AreEqual(url, "http://www.kanf.cn/issue/");

            url = VirtualPathHelper.Combine("http://www.kanf.cn/news", "issue");

            Assert.AreEqual(url, "http://www.kanf.cn/news/issue");
        }
        /// <summary>
        /// 渲染指定了路径的部分视图
        /// </summary>
        /// <param name="path">部分视图的路径</param>
        /// <returns>渲染结果</returns>
        protected virtual string RenderVirtualPath(string path)
        {
            if (!VirtualPathUtility.IsAppRelative(path))
            {
                throw VirtualPathHelper.VirtualPathFormatError("path");
            }


            var result = JumonyPartialHandler.RenderPartial(HttpContext, path);

            if (result == null)
            {
                throw new HttpException(404, "找不到部分视图");
            }

            else
            {
                return(result);
            }
        }
Exemple #8
0
        private string FindMasterView(string directory)
        {
            string masterPath;

            if (MvcEnvironment.Configuration.FallbackDefaultMaster)
            {
                masterPath = VirtualPathHelper.FallbackSearch(VirtualPathProvider, directory, "_master.html");
            }

            else
            {
                masterPath = VirtualPathUtility.Combine(directory, "_master.html");
                if (!VirtualPathProvider.FileExists(masterPath))
                {
                    masterPath = null;
                }
            }


            return(masterPath);
        }
 public VirtualPathHelperTests()
 {
     TestVirtualPathProvider = new TestVirtualPathProvider();
     VirtualPathHelper       = new VirtualPathHelper(TestVirtualPathProvider);
 }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Register script for pendingCallbacks repair
        ScriptHelper.FixPendingCallbacks(Page);

        // Handle Import settings
        if (!Page.IsCallback && !RequestHelper.IsPostBack())
        {
            // Initialize virtual path provider
            VirtualPathHelper.Init(Page);

            // Initialize import settings
            ImportSettings = GetNewSettings();
        }

        if (!Page.IsCallback)
        {
            if (!SettingsKeyProvider.UsingVirtualPathProvider)
            {
                lblWarning.Visible = true;
                lblWarning.Text    = GetString("ImportSite.VirtualPathProviderNotRunning");
            }

            ctrlAsync.OnFinished += ctrlAsync_OnFinished;
            ctrlAsync.OnError    += ctrlAsync_OnError;

            bool notTempPermissions = false;

            if (wzdImport.ActiveStepIndex < 3)
            {
                stpConfigImport.Settings = ImportSettings;
                stpSiteDetails.Settings  = ImportSettings;
                stpImport.Settings       = ImportSettings;

                // Ensure directory
                DirectoryHelper.EnsureDiskPath(ImportSettings.TemporaryFilesPath + "\\temp.file", ImportSettings.WebsitePath);
                // Check permissions
                notTempPermissions = !DirectoryHelper.CheckPermissions(ImportSettings.TemporaryFilesPath, true, true, false, false);
            }

            if (notTempPermissions)
            {
                pnlWrapper.Visible         = false;
                lblError.Text              = string.Format(GetString("ImportSite.ErrorPermissions"), ImportSettings.TemporaryFilesPath, WindowsIdentity.GetCurrent().Name);
                pnlPermissions.Visible     = true;
                lnkPermissions.Target      = "_blank";
                lnkPermissions.Text        = GetString("Install.ErrorPermissions");
                lnkPermissions.NavigateUrl = ResolveUrl("~/CMSMessages/ConfigurePermissions.aspx");
            }
            else
            {
                if (!RequestHelper.IsPostBack())
                {
                    // Delete temporary files
                    try
                    {
                        // Delete only folder structure if there is not special folder
                        bool onlyFolderStructure = !Directory.Exists(DirectoryHelper.CombinePath(ImportSettings.TemporaryFilesPath, ImportExportHelper.FILES_FOLDER));
                        ImportProvider.DeleteTemporaryFiles(ImportSettings, onlyFolderStructure);
                    }
                    catch (Exception ex)
                    {
                        pnlWrapper.Visible = false;
                        lblError.Text      = GetString("ImportSite.ErrorDeletionTemporaryFiles") + ex.Message;
                        return;
                    }
                }

                // Javascript functions
                string script =
                    "var imMessageText = '';\n" +
                    "var imErrorText = '';\n" +
                    "var imWarningText = '';\n" +
                    "var imMachineName = '" + SqlHelperClass.MachineName.ToLowerCSafe() + "';\n" +
                    "var getBusy = false;\n" +
                    "function GetImportState(cancel)\n" +
                    "{ if(window.Activity){window.Activity();} if (getBusy && !cancel) return; getBusy = true; setTimeout(\"getBusy = false;\", 2000); var argument = cancel + ';' + imMessageText.length + ';' + imErrorText.length + ';' + imWarningText.length + ';' + imMachineName; return " + Page.ClientScript.GetCallbackEventReference(this, "argument", "SetImportStateMssg", "argument", true) + " }\n";

                script +=
                    "function SetImportStateMssg(rValue, context)\n" +
                    "{\n" +
                    "   getBusy = false;\n" +
                    "   if(rValue != '')\n" +
                    "   {\n" +
                    "       var args = context.split(';');\n" +
                    "       var values = rValue.split('" + SiteExportSettings.SEPARATOR + "');\n" +
                    "       var messageElement = document.getElementById('" + lblProgress.ClientID + "');\n" +
                    "       var errorElement = document.getElementById('" + lblError.ClientID + "');\n" +
                    "       var warningElement = document.getElementById('" + lblWarning.ClientID + "');\n" +
                    "       var messageText = imMessageText;\n" +
                    "       messageText = values[1] + messageText.substring(messageText.length - args[1]);\n" +
                    "       if(messageText.length > imMessageText.length){ imMessageText = messageElement.innerHTML = messageText; }\n" +
                    "       var errorText = imErrorText;\n" +
                    "       errorText = values[2] + errorText.substring(errorText.length - args[2]);\n" +
                    "       if(errorText.length > imErrorText.length){ imErrorText = errorElement.innerHTML = errorText; }\n" +
                    "       var warningText = imWarningText;\n" +
                    "       warningText = values[3] + warningText.substring(warningText.length - args[3]);\n" +
                    "       if(warningText.length > imWarningText.length){ imWarningText = warningElement.innerHTML = warningText; }\n" +
                    "       if((values=='') || (values[0]=='F'))\n" +
                    "       {\n" +
                    "           StopImportStateTimer();\n" +
                    "           BTN_Disable('" + CancelButton.ClientID + "');\n" +
                    "           BTN_Enable('" + FinishButton.ClientID + "');\n" +
                    "       }\n" +
                    "   }\n" +
                    "}\n";

                // Register the script to perform get flags for showing buttons retrieval callback
                ScriptHelper.RegisterClientScriptBlock(this, GetType(), "GetSetImportState", ScriptHelper.GetScript(script));

                // Add cancel button attribute
                CancelButton.Attributes.Add("onclick", "BTN_Disable('" + CancelButton.ClientID + "');" + "return CancelImport();");

                wzdImport.NextButtonClick     += wzdImport_NextButtonClick;
                wzdImport.PreviousButtonClick += wzdImport_PreviousButtonClick;
                wzdImport.FinishButtonClick   += wzdImport_FinishButtonClick;

                if (!RequestHelper.IsPostBack())
                {
                    stpConfigImport.InitControl();
                }
            }
        }
    }
 protected override Stream ObtainStream()
 {
     return(FileHelper.ToStream(VirtualPathHelper.GetPhysicalPath(name)));
 }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Register script for pendingCallbacks repair
        ScriptHelper.FixPendingCallbacks(this.Page);

        // Handle export settings
        if (!Page.IsCallback && !RequestHelper.IsPostBack())
        {
            // Initialize virtual path provider
            VirtualPathHelper.Init(Page);

            ExportSettings = GetNewSettings();
        }

        if (!Page.IsCallback)
        {
            // Display BETA warning
            lblBeta.Visible = CMSContext.IsBetaVersion();
            lblBeta.Text    = string.Format(GetString("export.BETAwarning"), CMSContext.GetFriendlySystemVersion(false));

            bool notTargetPermissions = false;
            bool notTempPermissions   = false;

            ctrlAsync.OnFinished += ctrlAsync_OnFinished;
            ctrlAsync.OnError    += ctrlAsync_OnError;

            // Init steps
            if (wzdExport.ActiveStepIndex < 2)
            {
                configExport.Settings = ExportSettings;
                if (!RequestHelper.IsPostBack())
                {
                    configExport.SiteId = SiteId;
                }

                pnlExport.Settings = ExportSettings;

                // Ensure directories and check permissions
                try
                {
                    DirectoryHelper.EnsureDiskPath(ExportSettings.TargetPath + "\\temp.file", ExportSettings.WebsitePath);
                    notTargetPermissions = !DirectoryHelper.CheckPermissions(ExportSettings.TargetPath, true, true, false, false);
                }
                catch (UnauthorizedAccessException)
                {
                    notTargetPermissions = true;
                }
                try
                {
                    DirectoryHelper.EnsureDiskPath(ExportSettings.TemporaryFilesPath + "\\temp.file", ExportSettings.WebsitePath);
                    notTempPermissions = !DirectoryHelper.CheckPermissions(ExportSettings.TemporaryFilesPath, true, true, false, false);
                }
                catch (UnauthorizedAccessException)
                {
                    notTempPermissions = true;
                }
            }

            if (notTargetPermissions || notTempPermissions)
            {
                string folder = (notTargetPermissions) ? ExportSettings.TargetPath : ExportSettings.TemporaryFilesPath;
                pnlWrapper.Visible         = false;
                lblError.Text              = string.Format(GetString("ExportSite.ErrorPermissions"), folder, System.Security.Principal.WindowsIdentity.GetCurrent().Name);
                pnlPermissions.Visible     = true;
                lnkPermissions.Target      = "_blank";
                lnkPermissions.Text        = GetString("Install.ErrorPermissions");
                lnkPermissions.NavigateUrl = ResolveUrl("~/CMSMessages/ConfigurePermissions.aspx");
            }
            else
            {
                // Try to delete temporary files from previous export
                if (!RequestHelper.IsPostBack())
                {
                    try
                    {
                        ExportProvider.DeleteTemporaryFiles(ExportSettings, false);
                    }
                    catch (Exception ex)
                    {
                        pnlWrapper.Visible = false;
                        lblError.Text      = GetString("ImportSite.ErrorDeletionTemporaryFiles") + ex.Message;
                        return;
                    }
                }

                PortalHelper.EnsureScriptManager(this.Page).EnablePageMethods = true;

                // Javascript functions
                string script =
                    @"var exMessageText = '';
var exErrorText = '';
var exWarningText = '';
var exMachineName = '" + SqlHelperClass.MachineName.ToLower() + @"';
var getBusy = false;

function GetExportState(cancel) { 
    if (window.Activity) { 
        window.Activity(); 
    } 
    if (getBusy) return; 
    getBusy = true; 
    setTimeout('getBusy = false;', 2000);
    var argument = cancel + ';' + exMessageText.length + ';' + exErrorText.length + ';' + exWarningText.length + ';' + exMachineName; 
    " + Page.ClientScript.GetCallbackEventReference(this, "argument", "SetExportStateMssg", "argument", false) + @";
}

function SetExportStateMssg(rValue, context) {
    getBusy = false;
    if (rValue!='') {
        var args = context.split(';');
        var values = rValue.split('" + SiteExportSettings.SEPARATOR + @"');
        var messageElement = document.getElementById('" + lblProgress.ClientID + @"');
        var errorElement = document.getElementById('" + lblError.ClientID + @"');
        var warningElement = document.getElementById('" + lblWarning.ClientID + @"');
        var messageText = exMessageText;
        messageText = values[1] + messageText.substring(messageText.length - args[1]);
        if (messageText.length > exMessageText.length) { 
            exMessageText = messageElement.innerHTML = messageText; 
        }
        var errorText = exErrorText;
        errorText = values[2] + errorText.substring(errorText.length - args[2]);
        if (errorText.length > exErrorText.length) { 
            exErrorText = errorElement.innerHTML = errorText; 
        }
        var warningText = exWarningText;
        warningText = values[3] + warningText.substring(warningText.length - args[3]);
        if (warningText.length > exWarningText.length) { 
            exWarningText = warningElement.innerHTML = warningText; 
        }
        if ((values=='') || (values[0]=='F')) {
            StopExportStateTimer();
            BTN_Enable('" + FinishButton.ClientID + @"');
            try {
                BTN_Disable('" + CancelButton.ClientID + @"');
            }
            catch(err) {
            }
        }
    }
}";

                // Register the script to perform get flags for showing buttons retrieval callback
                ScriptHelper.RegisterClientScriptBlock(this, GetType(), "GetSetExportState", ScriptHelper.GetScript(script));

                // Add cancel button attribute
                CancelButton.Attributes.Add("onclick", "BTN_Disable('" + CancelButton.ClientID + "'); return CancelExport();");

                wzdExport.NextButtonClick     += wzdExport_NextButtonClick;
                wzdExport.PreviousButtonClick += wzdExport_PreviousButtonClick;
                wzdExport.FinishButtonClick   += wzdExport_FinishButtonClick;

                if (!RequestHelper.IsPostBack())
                {
                    configExport.InitControl();
                }
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Register script for pendingCallbacks repair
        ScriptHelper.FixPendingCallbacks(Page);

        // Handle Import settings
        if (!Page.IsCallback && !RequestHelper.IsPostBack())
        {
            // Check if any template is present on the disk
            if (!WebTemplateInfoProvider.IsAnyTemplatePresent())
            {
                selectTemplate.StopProcessing = true;
                pnlWrapper.Visible            = false;
                lblError.Visible = true;
                lblError.Text    = GetString("NewSite.NoWebTemplate");
            }

            // Initialize virtual path provider
            VirtualPathHelper.Init(Page);

            // Initialize import settings
            ImportSettings                       = new SiteImportSettings(CMSContext.CurrentUser);
            ImportSettings.WebsitePath           = Server.MapPath("~/");
            ImportSettings.PersistentSettingsKey = PersistentSettingsKey;
        }

        if (Page.IsCallback)
        {
            // Stop processing when callback
            selectTemplate.StopProcessing = true;
            selectMaster.StopProcessing   = true;
        }
        else
        {
            selectTemplate.StopProcessing = (CausedPostback(PreviousButton) && (wzdImport.ActiveStepIndex == 2)) ? false : (wzdImport.ActiveStepIndex != 1);
            selectMaster.StopProcessing   = (wzdImport.ActiveStepIndex != 5);

            PreviousButton.Enabled = true;
            PreviousButton.Visible = (wzdImport.ActiveStepIndex <= 4);
            NextButton.Enabled     = true;

            // Bind async controls events
            ctrlAsync.OnFinished  += ctrlAsync_OnFinished;
            ctrlAsync.OnError     += ctrlAsync_OnError;
            ctrlImport.OnFinished += ctrlImport_OnFinished;

            if (wzdImport.ActiveStepIndex < 4)
            {
                siteDetails.Settings = ImportSettings;
                pnlImport.Settings   = ImportSettings;
            }

            // Javascript functions
            string script =
                "var nMessageText = '';\n" +
                "var nErrorText = '';\n" +
                "var nWarningText = '';\n" +
                "var nMachineName = '" + SqlHelperClass.MachineName.ToLowerCSafe() + "';\n" +
                "var getBusy = false; \n" +
                "function GetImportState(cancel) \n" +
                "{ if(window.Activity){window.Activity();} if (getBusy && !cancel) return; getBusy = true; setTimeout(\"getBusy = false;\", 2000); var argument = cancel + ';' + nMessageText.length + ';' + nErrorText.length + ';' + nWarningText.length + ';' + nMachineName; return " + Page.ClientScript.GetCallbackEventReference(this, "argument", "SetImportStateMssg", "argument", true) + " } \n";

            script +=
                "function SetImportStateMssg(rValue, context) \n" +
                "{ \n" +
                "   getBusy = false; \n" +
                "   if(rValue!='') \n" +
                "   { \n" +
                "       var args = context.split(';');\n" +
                "       var values = rValue.split('" + SiteExportSettings.SEPARATOR + "');\n" +
                "       var messageElement = document.getElementById('" + lblProgress.ClientID + "');\n" +
                "       var errorElement = document.getElementById('" + lblError.ClientID + "');\n" +
                "       var warningElement = document.getElementById('" + lblWarning.ClientID + "');\n" +
                "       var messageText = nMessageText;\n" +
                "       messageText = values[1] + messageText.substring(messageText.length - args[1]);\n" +
                "       if(messageText.length > nMessageText.length){ nMessageText = messageElement.innerHTML = messageText; }\n" +
                "       var errorText = nErrorText;\n" +
                "       errorText = values[2] + errorText.substring(errorText.length - args[2]);\n" +
                "       if(errorText.length > nErrorText.length){ nErrorText = errorElement.innerHTML = errorText; }\n" +
                "       var warningText = nWarningText;\n" +
                "       warningText = values[3] + warningText.substring(warningText.length - args[3]);\n" +
                "       if(warningText.length > nWarningText.length){ nWarningText = warningElement.innerHTML = warningText; }\n" +
                "       if((values=='') || (values[0]=='F')) \n" +
                "       { \n" +
                "           StopImportStateTimer(); \n" +
                "           if (!document.importCancelled) { \n" +
                "              if(values[2] == '') { \n" +
                "                  BTN_Enable('" + NextButton.ClientID + "'); \n" +
                "              } \n" +
                "              else { \n" +
                "                  BTN_Enable('" + PreviousButton.ClientID + "'); \n" +
                "              } \n" +
                "              BTN_Disable('" + CancelButton.ClientID + "'); \n" +
                "           } \n" +
                "       } \n" +
                "   } \n" +
                "} \n";

            // Register the script to perform get flags for showing buttons retrieval callback
            ScriptHelper.RegisterClientScriptBlock(this, GetType(), "GetSetImportState", ScriptHelper.GetScript(script));

            // Add cancel button attribute
            CancelButton.Attributes.Add("onclick",
                                        "BTN_Disable('" + CancelButton.ClientID + "'); " +
                                        "CancelImport();" +
                                        ((wzdImport.ActiveStepIndex == 3) ? string.Empty : "BTN_Enable('" + PreviousButton.ClientID + "'); ") +
                                        "document.importCancelled = true;return false;"
                                        );

            wzdImport.NextButtonClick     += wzdImport_NextButtonClick;
            wzdImport.PreviousButtonClick += wzdImport_PreviousButtonClick;
            wzdImport.FinishButtonClick   += wzdImport_FinishButtonClick;
        }
    }
        public HttpControllerDescriptor SelectController(HttpRequestMessage request)
        {
            var routeData = (IHttpRouteData)request.Properties[System.Web.Http.Hosting.HttpPropertyKeys.HttpRouteDataKey];

            if (routeData == null)
            {
                return(null);
            }

            //处理路由中action可能与args错位的问题。
            if (routeData.Values.TryGetValue("action", out var action) && action != null)
            {
                foreach (var chr in (string)action)
                {
                    //如果action包含非数字、字母及下划线字符则认为其与args错位了
                    if (!Char.IsLetterOrDigit(chr) && chr != '_')
                    {
                        routeData.Values["args"]   = action;
                        routeData.Values["action"] = null;
                        break;
                    }
                }
            }

            string areaName, controllerPath;

            if (routeData.Route.DataTokens.TryGetValue("area", out var area))
            {
                areaName = (string)area;
            }
            else
            {
                areaName = VirtualPathHelper.GetArea(routeData.Route.RouteTemplate);
            }

            if (string.IsNullOrWhiteSpace(areaName))
            {
                controllerPath = Zongsoft.Plugins.PluginPath.Combine(ROOT_CONTROLLERS_PATH, (string)routeData.Values["controller"]);
            }
            else
            {
                controllerPath = Zongsoft.Plugins.PluginPath.Combine(ROOT_CONTROLLERS_PATH, areaName, (string)routeData.Values["controller"]);
            }

            var node = _pluginContext.PluginTree.Find(controllerPath);

            if (node == null)
            {
                return(null);
            }

            routeData.Values["area"]            = areaName;
            routeData.Values["controller.path"] = controllerPath;

            //如果显式指定了动作名并且当前控制器节点有子节点,则进行子控制器的匹配
            if (action is string actionName && actionName.Length > 0 && node.Children.Count > 0)
            {
                foreach (var child in node.Children)
                {
                    if (string.Equals(child.Name, actionName, StringComparison.OrdinalIgnoreCase))
                    {
                        routeData.Values["controller"]      = node.Name + "." + child.Name;
                        routeData.Values["controller.path"] = child.FullPath;

                        //修正子控制器的路由信息
                        AmendRoutes(request.Method.Method, routeData.Values);

                        //将控制器节点更改为匹配的子节点
                        node = child;

                        break;
                    }
                }
            }

            var descriptor = new PluginHttpControllerDescriptor(request.GetConfiguration(), node);

            descriptor.Properties["route.area"]  = areaName;
            descriptor.Properties["http.method"] = request.Method.Method;

            return(descriptor);
        }
Exemple #15
0
 /// <summary>
 /// Registers the folders handled by virtual path provider
 /// </summary>
 private static void RegisterVirtualFolders()
 {
     VirtualPathHelper.RegisterVirtualPath("~/CMSWebParts/", false);
     VirtualPathHelper.RegisterVirtualPath("~/CMSFormControls/", false);
     VirtualPathHelper.RegisterVirtualPath("~/CMSPages/", false);
 }