网站安装打包 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一大堆的";

 

打完,收工!

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2010/01/21/1653367.html

相关文章
关于springboot配置文件未加载的问题解决办法
一般情况下springboot的项目的配置文件都是默认加载的properties文件和yaml文件,但是有时候因为一些其他的设置也会导致这些配置文件没有被加载
2357 0
关于springboot配置文件未加载的问题解决办法
|
2月前
|
应用服务中间件 Shell PHP
thinkphp 设置运行目录为/public后 404错误
thinkphp 设置运行目录为/public后 404错误
|
5月前
|
Java 文件存储
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi
|
7月前
|
前端开发 JavaScript Java
Springboot静态资源访问、上传、回显和下载
Springboot静态资源访问、上传、回显和下载
267 0
Springboot静态资源访问、上传、回显和下载
|
7月前
|
Java
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
651 0
|
存储 前端开发 Java
【SpringMVC】一行代码完成文件上传&JRebel的使用
【SpringMVC】一行代码完成文件上传&JRebel的使用
75 0
|
7月前
|
开发工具 git Windows
IDEA常用插件之私有注解Private Notes
IDEA常用插件之私有注解Private Notes
220 0
|
前端开发 Java 应用服务中间件
SpringMVC文件的上传下载&JRebel的使用
SpringMVC文件的上传下载&JRebel的使用
56 0
|
Java Maven
maven打包成功但项目启动时找不到其他包的内容
maven打包成功但项目启动时找不到其他包的内容
203 0
|
XML 前端开发 应用服务中间件
web工程部署路径与getServletConfig().getRealPath()
我们都知道,通过ServletContext类可以获取工程路径(虚拟路径)以及工程部署在服务器硬盘上的绝对路径 那我们首先应该了解一个工程是怎样部署的,以idea为例 不知道大家有没有发现每当我们启动服务器时,都会有这样一个地址

热门文章

最新文章