网站安装打包 webconfig修改[三]

简介:

在net中,在System.Configuration.ConfigurationManager中,提供了几个静态方法,用来修改配置文件。

如:System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenMachineConfiguration();

获得应用程序下的配置文件,之后再用config进行操作。

如果是在web中,那就是操作webconfig了!不过现在在winform中,就成了操作app.config了。

 


 

于是,我选择了还是以操作xml的方式来修改webconfig。

这里写了几个类,主要也是模仿config的操作方式。代码如下:

 

复制代码
using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Xml;
namespace  IISHelper
{
    
public   class  WebConfigHelper : IDisposable
    {
        
private   bool  loadIsOK;
        
///   <summary>
        
///  加载是否成功
        
///   </summary>
         public   bool  LoadIsOK
        {
            
get  {  return  loadIsOK; }
            
set  { loadIsOK  =  value; }
        }

        
private  XmlDocument xDox  =   new  XmlDocument();
        
private   string  configPath  =   string .Empty;
        
public  WebConfigHelper( string  webconfigPath)
        {
            
try
            {
                xDox.Load(webconfigPath);
                configPath 
=  webconfigPath;
                loadIsOK 
=   true ;
            }
            
catch  { loadIsOK  =   false ; }
            
        }
        
public  WebConfigAppSetting AppSetting
        {
            
get
            {
                XmlNode xNode
= xDox.SelectSingleNode( " //configuration/appSettings " );
                
if (xNode == null )
                {
                    
return   null ;
                }
                
return   new  WebConfigAppSetting( ref  xNode);
            }
        }
        
public  WebConfigConnectionStrings ConnectionStrings
        {
            
get
            {
                XmlNode xNode 
=  xDox.SelectSingleNode( " //configuration/connectionStrings " );
                
if  (xNode  ==   null )
                {
                    
return   null ;
                }
                
return   new  WebConfigConnectionStrings( ref  xNode);
            }
        }
        
public   bool  Save()
        {
            
try
            {
                xDox.Save(configPath);
                
return   true ;
            }
            
catch  { }
            
return   false ;
        }
        
#region  IDisposable 成员
        
public   void  Dispose()
        {
            xDox 
=   null ;
        }
        
#endregion
    }
    
public   abstract   class  WebConfigBase
    {
        
protected  XmlNode node;
        
public    void  Add( string  key,  string  value){}
        
public   abstract   void  Set( string  key,  string  value);
        
public   abstract   string  Get( string  key);
        
public    void  Remove( string  key,  string  value){}
    }
    
public   class  WebConfigAppSetting : WebConfigBase
    {
        
internal   WebConfigAppSetting( ref  XmlNode xNode)
        {
            node 
=  xNode;
        }
        
public   override   void  Set( string  key,  string  value)
        {
            
foreach  (XmlNode addNode  in  node.ChildNodes)
            {
                
if  (addNode.Attributes  !=   null   &&  addNode.Attributes[ " key " ].Value  ==  key)
                {
                    addNode.Attributes[
" value " ].Value  =  value;
                    
break ;
                }
            }
        }
        
public   override   string  Get( string  key)
        {
            
foreach  (XmlNode addNode  in  node.ChildNodes)
            {
                
if  (addNode.Attributes  !=   null   &&  addNode.Attributes[ " key " ].Value  ==  key)
                {
                  
return   addNode.Attributes[ " value " ].Value;
                }
            }
            
return   "" ;
        }
    }
    
public   class  WebConfigConnectionStrings : WebConfigBase
    {
        
internal   WebConfigConnectionStrings( ref  XmlNode xNode)
        {
            node 
=  xNode;
        }
        
public   override   void  Set( string  key,  string  value)
        {
            
foreach  (XmlNode addNode  in  node.ChildNodes)
            {
                
if  (addNode.Attributes  !=   null   &&  addNode.Attributes[ " name " ].Value  ==  key)
                {
                    addNode.Attributes[
" connectionString " ].Value  =  value;
                    
break ;
                }
            }
        }
        
public   override   string  Get( string  key)
        {
            
foreach  (XmlNode addNode  in  node.ChildNodes)
            {
                
if  (addNode.Attributes  !=   null   &&  addNode.Attributes[ " name " ].Value  ==  key)
                {
                    
return  addNode.Attributes[ " connectionString " ].Value;
                }
            }
            
return   "" ;
        }
    }
}
复制代码

 

 下面看一下界面的操作方法:

 

复制代码
 WebConfigHelper allConfig  =   new  WebConfigHelper(allConfigPath);
            
if  (allConfig.LoadIsOK )
            {
                WebConfigAppSetting app 
=  allConfig.AppSetting;
                
if  (app  !=   null )
                {
                  
  app.Set( " MosFTPUserName " , txtMosFtpUserName.Text);
                    app.Set(
" MosFTPPassword " , txtMosFtpPassword.Text);
                    app.Set(
" ProvideFor " , cbbProvideFor.Text);
                 
}
                WebConfigConnectionStrings connString 
=  allConfig.ConnectionStrings;
                
if  (connString  !=   null )
                {
                    connString.Set(
" Conn " , txtConn.Text);
                }
                allConfig.Save();
                allConfig.Dispose();

               
 MessageBox.Show( " 配置文件修改成功! " );
            }
复制代码

 

 这里提示一下,web.config中,不要带名称空间,就是xmlns="xxxx一大堆的";

 

打完,收工!

相关文章
|
JavaScript Java Maven
【技术贴】解决使用maven jetty启动后无法加载修改过后的静态资源
如何使用jetty自动热部署修改后的所有文件,比如js,jpg,class等,哇咔咔 太爽啦比tomcat舒服多了。   jetty模式是不能修改js文件的,比如你现在调试前端js,发现在myeclipse/eclipse的源码里面无法修改文件,点都不让你点,所以,你只能采用一些办法,更改jetty的模式配置。
1440 0
|
Java API Android开发
通过自定义Gradle插件修改编译后的class文件
通过自定义Gradle插件修改编译后的class文件
通过自定义Gradle插件修改编译后的class文件
|
Java Maven Android开发
【技术贴】第二篇 :解决使用maven jetty启动后无法加载修改过后的静态资源
之前写过第一篇:【技术贴】解决使用maven jetty启动后无法加载修改过后的静态资源 一直用着挺舒服的,直到今天,出现了又不能修改静态js,jsp等资源的现象。很是苦闷。 经过调错处理之后,发现是jetty报错,可以如下修改解决,jetty defaultsDescriptor 不起作用 在web.
1446 0
|
存储 前端开发 Java
【SpringMVC】文件上传与下载、JREBEL使用
它可以让用户上传文件到服务器或者从服务器下载文件。这对于许多Web应用程序来说是必不可少的功能,比如在线存储、文档管理系统等。SpringMVC提供了一些方便的注释和API,可以使文件上传和下载变得非常简单。在文件上传方面,SpringMVC提供了。类,可以轻松地处理上传的文件。在文件下载方面,SpringMVC提供了。在你的spring mvc里面的pom.xml里面添加文件上传的依赖。并且下载,安装成功之后会让你重启,重启之后按操作来。根据自己的表来也是可以的,只是用来保存数据。
|
前端开发 Java 应用服务中间件
SpringMVC文件的上传下载&JRebel的使用
SpringMVC文件的上传下载&JRebel的使用
61 0
|
存储 前端开发 Java
【SpringMVC】一行代码完成文件上传&JRebel的使用
【SpringMVC】一行代码完成文件上传&JRebel的使用
88 0
|
8月前
|
Java Maven
Maven项目打包成jar项目后运行报错误: 找不到或无法加载主类 Main.Main 和 jar中没有主清单属性解决方案
Maven项目打包成jar项目后运行报错误: 找不到或无法加载主类 Main.Main 和 jar中没有主清单属性解决方案
1313 0
|
Java
关于 springboot 打包jar 无法加载引入的第三方自定义jar包
使用springboot打jar包时,尤其是引入的第三方的jar包,打包时经常会发生找不到的错误导致打包失败
389 0

热门文章

最新文章