none
如何解讀Web.config RRS feed

  • 問題


  •  我想在winform程式裡解讀一個web.config的檔案
    web.config是一個標準的xml檔案, 是供給web applicatoin 用的
    我的大概長得像這個樣子:
    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
     <configSections>
      <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" requirePermission="false" allowDefinition="MachineToApplication" />
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, 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" requirePermission="false" allowDefinition="Everywhere" />
         <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
         <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
         <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /></sectionGroup>
       </sectionGroup>
      </sectionGroup>
     </configSections>
     <appSettings>
      <add key="Ver" value="8.43" />
      <add key="Release" value="B01" />
    我想讀取裡面的  <appSettings> key= "Ver"的值
    請問要如何做呢?
      
    2009年2月6日 下午 08:31

解答

  • 使用 XmlDocument,配合 XPath: //configuration/appSettings 來讀。
    不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    • 已提議為解答 Alex Cheung 2009年2月7日 下午 05:23
    • 已標示為解答 Lolota Lee 2009年2月9日 下午 02:57
    2009年2月7日 上午 12:36
    版主

所有回覆

  • 使用 XmlDocument,配合 XPath: //configuration/appSettings 來讀。
    不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    • 已提議為解答 Alex Cheung 2009年2月7日 下午 05:23
    • 已標示為解答 Lolota Lee 2009年2月9日 下午 02:57
    2009年2月7日 上午 12:36
    版主
  • Willardryan 表示:
     <appSettings>
      <add key="Ver" value="8.43" />
      <add key="Release" value="B01" />
    我想讀取裡面的  <appSettings> key= "Ver"的值
    請問要如何做呢?
      

    請用System.Configuration.ConfigurationManager.AppSettings["Ver"].ToString() 來取 "8.43" 這個值


    Microsoft MVP, Microsoft Community Star(TW & HK), MCT, MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA
    2009年2月7日 上午 03:55
  • MS MVP KenLin for VB.NET 表示:

    Willardryan 表示:
     <appSettings>
      <add key="Ver" value="8.43" />
      <add key="Release" value="B01" />
    我想讀取裡面的  <appSettings> key= "Ver"的值
    請問要如何做呢?
      

    請用System.Configuration.ConfigurationManager.AppSettings["Ver"].ToString() 來取 "8.43" 這個值


    Microsoft MVP, Microsoft Community Star(TW & HK), MCT, MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA



    System.Configuration.ConfigurationManager 不是用來開 Web.Config 呀 (佢只有Method 去 Open xxxx.exe.config 同 xxxx.dll.config 或者 Machine Config).

    如果要開 Web.Config 要用 System.Web.Configuration.WebConfigurationManager. 但由於係 Win Form 用 WebConfigurationManager 沒有了 VirutalPath 等 Parameters 應該都不能使用.

    最方便的方法應該係 小朱的方法用 XmlDocument.

    Alex Cheung
    2009年2月7日 下午 05:34
  • Alex Cheung, 
    你是不是開發 Web Application的?
    我從.NET Beta開始作Web Application,到.NET 3.5,都是直接可以開Web.Config,
    1) .NET 1.x, .NET 2.0 可以用 System.Configuration.ConfigurationSettings去開
    2) .NET 2.0 或以後,用System.Configuration.ConfigurationManager.AppSettings

    我平時是直接在 CodeBehind 打 ConfigurationManager.AppSettings 或打 ConfigurationSettings,沒有打Full Namespace,也可以。
    麻煩你試了我的方法,不行再看一看是怎麼回事。反而我是第一次知道有WebConfigurationManager,先謝謝你也教了我新的東西。

    你可以試試開一個新的Web Application 或 Web Site,裡面放一個Label,如下

    1 <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> 
    2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    3  
    4 <html xmlns="http://www.w3.org/1999/xhtml">  
    5 <head runat="server">  
    6     <title></title>  
    7 </head> 
    8 <body> 
    9     <form id="form1" runat="server">  
    10     <div> 
    11         <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
    12     </div> 
    13     </form> 
    14 </body> 
    15 </html> 

    再在Web.Config裡面加上AppSettings
    1 <appSettings> 
    2     <add key="TestMessage" value="This is a test app setting value."/>  
    3 </appSettings> 

    再在Code-Behind裡,
    1     Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load  
    2         Me.Label1.Text = System.Configuration.ConfigurationManager.AppSettings("TestMessage").ToString()  
    3     End Sub 

    Microsoft MVP, Microsoft Community Star(TW & HK), MCT, MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA
    2009年2月9日 上午 01:48
  • MS MVP KenLin for VB.NET 表示:

    Alex Cheung, 
    你是不是開發 Web Application的?
    我從.NET Beta開始作Web Application,到.NET 3.5,都是直接可以開Web.Config,
    1) .NET 1.x, .NET 2.0 可以用 System.Configuration.ConfigurationSettings去開
    2) .NET 2.0 或以後,用System.Configuration.ConfigurationManager.AppSettings

    我平時是直接在 CodeBehind 打 ConfigurationManager.AppSettings 或打 ConfigurationSettings,沒有打Full Namespace,也可以。
    麻煩你試了我的方法,不行再看一看是怎麼回事。反而我是第一次知道有WebConfigurationManager,先謝謝你也教了我新的東西。

    你可以試試開一個新的Web Application 或 Web Site,裡面放一個Label,如下

     

    再在Web.Config裡面加上AppSettings
    1 <appSettings> 
    2     <add key="TestMessage" value="This is a test app setting value."/>  
    3 </appSettings> 

    再在Code-Behind裡,
    1     Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load  
    2         Me.Label1.Text = System.Configuration.ConfigurationManager.AppSettings("TestMessage").ToString()  
    3     End Sub 

    Microsoft MVP, Microsoft Community Star(TW & HK), MCT, MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA



    KenLin MVP, Willardryan 問的是 "我想在winform程式裡解讀一個web.config的檔案" 呀 ? 不是在 Web Application 上讀 Web.Config. 而你在 Web Application 可以用 ConfigurationManager 開到 Web.Config 只是當 ApplicationStart 的時候已經 Load 了 Web.Config. 所以你才能在 Web Application 中使用 ConfigurationManager 讀取 Web.Config. 當你需要在運作中的同時 Load 入其他 Web.Config, 用 ConfigurationManager 是不能 Load 到 Web.Config 因為只有 OpenExeConfiguration Method 去 xxxx.exe.config 的 File. 在 Web 要用 WebConfigurationManager.OpenWebConfiguration 才可以開到 Web.Config.

    所以我才說 XmlDocument 是一個方便的方法.

    如有錯誤請更正.
    Alex Cheung
    2009年2月9日 上午 06:30
  •  啊,我沒注意那是Win Form去讀,對不起,太大意了!
    Microsoft MVP, Microsoft Community Star(TW & HK), MCT, MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA
    2009年2月9日 上午 06:56