2011-08-18 88 views
0

我正在嘗試在安裝過程中從代碼更新web.config文件中的某些值。編輯Web.Config文件

到目前爲止,我發現這個更新連接字符串,

' Open Application's Web.Config 
    Dim config = WebConfigurationManager.OpenWebConfiguration("/" + TargetVDir, friendlySiteName) 

    'Add new connection string setting for web.config 
    Dim appDatabase = New ConnectionStringSettings() 
    appDatabase.Name = "TimeOffEntities" 
    appDatabase.ConnectionString = EFconnectionstring 

    config.ConnectionStrings.ConnectionStrings.Clear() 
    config.ConnectionStrings.ConnectionStrings.Add(appDatabase) 

    ' Persist web.config settings 
    config.Save() 

但是我需要更新另一部分,我不知道怎麼樣。我有一個電子郵件的設置,我不知道如何更新它們。下面的相關web.config部分,

<configuration> 

    <system.net> 
    <mailSettings> 
     <smtp> 
     <network 
      host="relayServerHostname" 
      port="portNumber" 
      userName="username" 
      password="password" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 

</configuration> 

回答

2

你需要推出一些你自己的XML解析。或者更好的是,如果您使用.NET 4,請使用config file transforms。其他配置節

Configuration config = WebConfigurationManager.OpenWebConfiguration(...); 

ConfigurationSection section = config.GetSection("system.net/mailSettings/smtp"); 
System.Net.Configuration.SmtpSection smtpSection = section as 
         System.Net.Configuration.SmtpSection; 
if (smtpSection != null) 
{ 
    smtpSection.Network.Host = ...; 
} 
config.Save(); 

,當然還有類似:

+0

+1爲轉換:-) – Yahia

+0

廢話,我真的希望,如果他們困擾做一個WebConfigurationManager類,它將能夠做到這一點。轉換似乎很簡單,但我必須弄清楚如何在安裝過程中應用它們。 – Kratz