2010-05-25 25 views
18

我有一個DLL提供我用於WebForms項目的日誌記錄,現在希望在ASP.Net MVC 2項目中使用它。applicationSettings和Web.config

該DLL的一些方面配置的app.config:

<configuration> 
    <configSections> 
      <section name="Tools.Instrumentation.Properties.Settings" 
        type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
        requirePermission="false" /> 
     </sectionGroup> 
    </configSections> 

<applicationSettings> 
     <Tools.Instrumentation.Properties.Settings> 
      <setting name="LogLevel" serializeAs="String"> 
       <value>DEBUG</value> 
      </setting> 
      <setting name="AppName" serializeAs="String"> 
       <value>MyApp</value> 
      </setting> 
      <setting name="Port" serializeAs="String"> 
       <!--value>33333</value--> 
       <value>0</value> 
      </setting> 
     </Tools.Instrumentation.Properties.Settings> 
    </configuration>  

然而,當我創建Web.config類似的條目,我得到的錯誤:

Unrecognized configuration section applicationSettings

我的兩部分問題:

  • 如何讓此配置條目在Web.config中工作?
  • 在哪裏可以閱讀WinForms配置和ASP.Net配置之間的概念差異?

回答

48

您的配置文件只是缺少的applicationSettings節組:

<configSections> 
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
     <section name="Tools.Instrumentation.Properties.Settings" 
       type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
       requirePermission="false" /> 
    </sectionGroup> 
</configSections> 

如果添加了,你可以把你的設置部分,在標籤內,你的組件應該由它作爲正常讀取。

+6

我有一個預感,這是一個更好的答案。 – 2012-04-13 15:32:25

+0

確實如此。接受它。 – 2013-01-04 18:16:59

+1

如果有其他人感到困惑,'sectionGroup'可以直接從'* .dll.config'文件複製到'web.config'文件'configSections'部分。之後,'applicationSettings'節可以被複制,就像它一樣。 – cjbarth 2013-03-05 22:50:51

3

注意該部分的name屬性?

嘗試從<applicationSettings>包裝

<Tools.Instrumentation.Properties.Settings> 
     <setting name="LogLevel" serializeAs="String"> 
      <value>DEBUG</value> 
     </setting> 
     <setting name="AppName" serializeAs="String"> 
      <value>MyApp</value> 
     </setting> 
     <setting name="Port" serializeAs="String"> 
      <!--value>33333</value--> 
      <value>0</value> 
     </setting> 
    </Tools.Instrumentation.Properties.Settings> 

刪除你的元素現在你可以使用一節。但是你沒有生成包裝類,你需要做更多的工作來使用ConfigurationManager來獲取你的值。

至於問題的第二部分,從一個角度來看,Web應用程序與表單應用程序處理配置文件的方式幾乎沒有任何區別。

這裏可能涉及或可能不相關的一個顯着差異是web.config文件可以被縱向映射的方式,每個後續文件在允許的情況下有效地增加或修改父配置。但在我看來,這更多的是行爲差異,而不是功能差異。

4

這裏的.NET 4版本的缺少配置的:

<configSections> 
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
     <section name="Tools.Instrumentation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </sectionGroup> 
</configSections> 

確保更新<section>name屬性值的命名空間,以配合自己。

相關問題