zoukankan      html  css  js  c++  java
  • enable feature AJAX of MOSS2007

    As default, the feature AJAX of MOSS2007 is disabled, so the site web configuration file should be modified to enable AJAX to achieve the auto complete functionality. The following are steps how to enable it.

    Option 1: Modify it manually

    step1: Open the web.config file, find out the <configSections> section then fill content out in the section below:

    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
          <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
            <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
              <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
              <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
              <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            </sectionGroup>
          </sectionGroup>
        </sectionGroup>
        <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
      </configSections>
    View Code

    Step2:Find the <pages> section then add the declaration of control below

    <controls>
            <add tagPrefix="asp" tagName="" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" />
          </controls>
    View Code

    Step3:Add the declaration of the assembly inside <assemblies> section

    <add assembly="System.Web.Extensions, Version=3.5.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    View Code

    Step4: Add predicate handler in the <httphandlers> section:

     <add path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=3.5.0.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35" validate="false" />
          <add path="*.AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
          <add path="ScriptSource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
    View Code

    Step5: Add script module inside the <httpModules> section as below:

    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions,  Version=3.5.0.0, Culture=neutral,   PublicKeyToken=31bf3856ad364e35" />
    View Code

    Step6:Add logging configuration inside  <configuration> section:

    <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
        <listeners>
          <add name="Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener,
     Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
    listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, 
    Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
    fileName="C:	race.log" traceOutputOptions="DateTime" />
        </listeners>
        <formatters>
          <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, 
    Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
    template="Timestamp: {timestamp}{newline}&#xA;Message: {message}{newline}&#xA;Category: {category}{newline}&#xA;Priority: 
    {priority}{newline}&#xA;EventId: {eventid}{newline}&#xA;Severity: {severity}{newline}&#xA;Title:{title}{newline}&#xA;Machine: 
    {localMachine}{newline}&#xA;App Domain: {localAppDomain}{newline}&#xA;ProcessId: {localProcessId}{newline}&#xA;Process Name: 
    {localProcessName}{newline}&#xA;Thread Name: {threadName}{newline}&#xA;Win32 ThreadId:{win32ThreadId}{newline}&#xA;Extended Properties: 
    {dictionary({key} - {value}{newline})}" name="Text Formatter" />
        </formatters>
        <categorySources>
          <add switchValue="All" name="General">
            <listeners>
              <add name="Flat File Trace Listener" />
            </listeners>
          </add>
        </categorySources>
        <specialSources>
          <allEvents switchValue="All" name="All Events" />
          <notProcessed switchValue="All" name="Unprocessed Category" />
          <errors switchValue="All" name="Logging Errors &amp; Warnings">
            <listeners>
              <add name="Flat File Trace Listener" />
            </listeners>
          </errors>
        </specialSources>
      </loggingConfiguration>
    View Code

     Option 2: Modify it automaticall by Feature

    public class WebConfigModification
        {
            private SPSite _site = null;
            public WebConfigModification(SPSite site)
            {
                this._site = site;
            }
            /// <summary>
            /// open the web.config file, find out the configSections section then fill in the section 
            /// </summary>
            private void ModifyConfigSections(Configuration config)
            {
                try
                {
                    ConfigurationSectionGroup sectionGroup = config.GetSectionGroup("system.web.extensions");
                    if (sectionGroup == null)
                    {
                        SystemWebExtensionsSectionGroup topGroup = new SystemWebExtensionsSectionGroup();
                        config.SectionGroups.Add("system.web.extensions", topGroup);
    
                        ScriptingSectionGroup scriptingGroup = new ScriptingSectionGroup();
                        topGroup.SectionGroups.Add("scripting", scriptingGroup);
    
                        ScriptingScriptResourceHandlerSection scriptResourceHandler = new ScriptingScriptResourceHandlerSection();
                        scriptingGroup.Sections.Add("scriptResourceHandler", scriptResourceHandler);
    
                        ScriptingWebServicesSectionGroup webServiceGroup = new ScriptingWebServicesSectionGroup();
                        scriptingGroup.SectionGroups.Add("webServices", webServiceGroup);
    
                        ScriptingJsonSerializationSection jsonSerialization = new ScriptingJsonSerializationSection();
                        webServiceGroup.Sections.Add("jsonSerialization", jsonSerialization);
    
                        ScriptingProfileServiceSection profileService = new ScriptingProfileServiceSection();
                        webServiceGroup.Sections.Add("profileService", profileService);
    
                        ScriptingAuthenticationServiceSection authenticationService = new ScriptingAuthenticationServiceSection();
                        webServiceGroup.Sections.Add("authenticationService", authenticationService);
                        config.Save();
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("ModifyConfigSectons error :" + ex.Message);
                }
            }
    
            /// <summary>
            /// find the pages section then add the declaration of control 
            /// </summary>
            private void ModifyPagesSection(Configuration config)
            {
                try
                {
                    bool prefixExists = false;
                    PagesSection pagesSection = (PagesSection)config.GetSection(@"system.web/pages");
                    for (int i = 0; i < pagesSection.Controls.Count; i++)
                    {
                        TagPrefixInfo prefix = pagesSection.Controls[i];
                        if (prefix.TagPrefix.ToLower().Trim() == "asp" && prefix.Namespace.ToLower().Trim() == "system.web.ui")
                        {
                            prefixExists = true;
                            break;
                        }
                    }
                    if (!prefixExists)
                    {
                        TagPrefixInfo prefixInfo = new TagPrefixInfo("asp", "System.Web.UI", "System.Web.Extensions, Version=3.5.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35", "", "");
                        pagesSection.Controls.Add(prefixInfo);
                        config.Save();
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("MOdifyPagesSection error: " + ex.Message);
                }
            }
    
            /// <summary>
            /// add the declaration of the assembly inside assemblies section
            /// </summary>
            private void ModifyAssemblies(Configuration config)
            {
                try
                {
                    bool assemblyexists = false;
                    CompilationSection compilationSection = (CompilationSection)config.GetSection(@"system.web/compilation");
                    AssemblyInfo newAssembly = new AssemblyInfo("System.Web.Extensions, Version=3.5.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35");
                    for (int i = 0; i < compilationSection.Assemblies.Count; i++)
                    {
                        AssemblyInfo assembly = compilationSection.Assemblies[i];
                        if (assembly.Equals(newAssembly))
                        {
                            assemblyexists = true;
                            break;
                        }
                    }
                    if (!assemblyexists)
                    {
                        compilationSection.Assemblies.Add(newAssembly);
                        config.Save();
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("ModifyAssemblies error: " + ex.Message);
                }
            }
    
            /// <summary>
            /// add the declaration of the assembly inside assemblies section
            /// </summary>
            private void ModifyHttpHandlers(Configuration config)
            {
                try
                {
                    List<HttpHandlerAction> handlers = new List<HttpHandlerAction>();
                    HttpHandlersSection handlersSection = (HttpHandlersSection)config.GetSection(@"system.web/httpHandlers");
                    HttpHandlerAction asmxHandlerAction = new HttpHandlerAction("*.asmx", "System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions, Version=3.5.0.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35", "*", false);
                    handlers.Add(asmxHandlerAction);
    
                    HttpHandlerAction appServiceHandlerAction = new HttpHandlerAction("*.AppService.axd", "System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "*", false);
                    handlers.Add(appServiceHandlerAction);
    
                    HttpHandlerAction getHeadHandlerAction = new HttpHandlerAction("ScriptSource.axd", "System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", "GET,HEAD", false);
                    handlers.Add(getHeadHandlerAction);
    
    
                    bool handlerActionExists = false;
                    foreach (HttpHandlerAction handlerAction in handlers)
                    {
                        for (int i = 0; i < handlersSection.Handlers.Count; i++)
                        {
                            if (handlersSection.Handlers[i].Equals(handlerAction))
                            {
                                handlerActionExists = true;
                            }
                        }
                        if (!handlerActionExists)
                        {
                            handlersSection.Handlers.Add(handlerAction);
                            config.Save();
                        }
    
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("ModifyHttpHandlers error: " + ex.Message);
                }
            }
    
            /// <summary>
            /// add script module inside the httpModules section
            /// </summary>
            private void ModifyModules(Configuration config)
            {
                try
                {
                    HttpModulesSection modulesSection = (HttpModulesSection)config.GetSection("system.web/httpModules");
                    HttpModuleAction moduleAction = new HttpModuleAction("ScriptModule", "System.Web.Handlers.ScriptModule, System.Web.Extensions,  Version=3.5.0.0, Culture=neutral,   PublicKeyToken=31bf3856ad364e35");
    
                    bool moduleExists = false;
                    for (int i = 0; i < modulesSection.Modules.Count; i++)
                    {
                        if (modulesSection.Modules[i].Name.ToLower().Trim() == moduleAction.Name.ToLower().Trim())
                        {
                            moduleExists = true;
                        }
                    }
                    if (!moduleExists)
                    {
                        modulesSection.Modules.Add(moduleAction);
                        config.Save();
                    }
    
                }
                catch (Exception ex)
                {
                    throw new Exception("MOdifyModules error: " + ex.Message);
    
                }
    
            }
    
            /// <summary>
            /// add safecontrol to the web.config
            /// </summary>
            /// <param name="site"></param>
            private void RegisterSafeControl()
            {
                try
                {
                    if (_site != null)
                    {
                        SPSecurity.RunWithElevatedPrivileges(() =>
                        {
                            SPWebApplication webApp = _site.WebApplication;
    
                            // Create a modification
                            SPWebConfigModification mod = new SPWebConfigModification(
                                "SafeControl[@Assembly="System.Web.Extensions,  Version=3.5.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35"][@Namespace="System.Web.UI"]"
                                    + "[@TypeName="*"][@Safe="True"][@AllowRemoteDesigner="True"]"
                                , "/configuration/SharePoint/SafeControls"
                                );
                            mod.Owner = "PeopleSearch";
                            mod.Sequence = 0;
                            mod.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
                            mod.Value = "<SafeControl Assembly='System.Web.Extensions,  Version=3.5.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35' Namespace='System.Web.UI' TypeName='*' Safe='True' />";
    
                            // Add the modification to the collection of modifications
    
                            //bool exists = false;
                            //foreach (SPWebConfigModification modificartion in webApp.WebConfigModifications)
                            //{
                            //    if (modificartion.Name == mod.Name)
                            //    {
                            //        exists = true;
                            //        break;
                            //    }
                            //}
                            //if (!exists)
                            {
    
                                webApp.WebConfigModifications.Add(mod);
                                webApp.Update();
                                // Apply the modification
                                webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
                            }
                        });
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("Register SafeControl error: " + ex.Message);
                }
            }
    
            /// <summary>
            /// modify all 
            /// </summary>
            /// <param name="config"></param>
            public void ModifiedToEnableAJAX(Configuration config)
            {
                if (config == null)
                {
                    return;
                }
                ModifyModules(config);
                ModifyPagesSection(config);
                ModifyHttpHandlers(config);
                ModifyConfigSections(config);
                ModifyAssemblies(config);
                //RegisterSafeControl();
            }
    
            public void RemoveSafeControl()
            {
                try
                {
                    if (_site != null)
                    {
                        SPSecurity.RunWithElevatedPrivileges(() =>
                        {
                            SPWebApplication webApp = _site.WebApplication;
                            Collection<SPWebConfigModification> modsCollection = webApp.WebConfigModifications;
                            SPWebConfigModification configModFound = null;
                            // Find the most recent modification of a specified owner
                            int modsCount1 = modsCollection.Count;
                            for (int i = modsCount1 - 1; i > -1; i--)
                            {
                                if (modsCollection[i].Owner == "PeopleSearch")
                                {
                                    configModFound = modsCollection[i];
                                }
                            }
    
                            // Remove it and save the change to the configuration database  
                            modsCollection.Remove(configModFound);
                            webApp.Update();
    
                            // Reapply all the configuration modifications
                            webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
    
    
    
                        });
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("Remove SafeControl error: " + ex.Message);
                }
            }
        }
    View Code
    public override void FeatureActivated(SPFeatureReceiverProperties properties)
            {
                SPSite site = null;
    
                try
                {
                    // Get a reference to the Site Collection of the feature
                    if (properties.Feature.Parent is SPSite)
                    { site = properties.Feature.Parent as SPSite; }
    
    
                    if (site != null)
                    {
                        string path = site.WebApplication.IisSettings[SPUrlZone.Default].Path.ToString();
                        BackUpConfiguration(path);
    
                        Configuration config = WebConfigurationManager.OpenWebConfiguration("/");
    
                        string logConfigPath = string.Empty;
                        var obj = config.AppSettings.Settings["logConfigPath"];
                        if (null != obj)
                        {
                            logConfigPath = obj.ToString();
                        }
                        ConfigLogSettings(path, logConfigPath);
                        //config.SaveAs(Path.Combine(path, fileName), ConfigurationSaveMode.Minimal, true);
    
                        WebConfigModification modification = new WebConfigModification(site);
                        modification.ModifiedToEnableAJAX(WebConfigurationManager.OpenWebConfiguration("/"));
                    }
                }
                catch (Exception ex)
                {
                    TraceLog.Error(ex.Message);
                }
            }
    }
    View Code
  • 相关阅读:
    金蝶中间件 前后台连不上 报跨域 前台解决方案: --user-data-dir="c:ChromeDebug" --test-type --disable-web-security
    chalk 库 console.info(chalk.blue('kkk'))
    让 js 失效 Chrome F12 右上角 settings
    openlayers.org 百度地图 静态化 同类产品
    vscode 自动格式化md文件,搞得很是郁闷,加入 [markdown] 自定义配置 "editor.formatOnSave": false 搞定了。
    electron vite2 vue3 安装 cvep my-electron-cvep
    baidu 突然打不开了 20210621
    vscode vue 鼠标Ctrl+单击 函数跳转 插件名称:vue-helper
    接口返回数据的属性值 不要返回数字0和1
    vscode 自动格式化 好使的配置 setting.json 20210622
  • 原文地址:https://www.cnblogs.com/CrystalWind/p/4435386.html
Copyright © 2011-2022 走看看