我花了半天的时间试图理解为什么以下失败。
我可以在任何地方添加部分,但从来没有让它像那样工作():
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<mysection />
<system.web>
<compilation debug="false" batch="false" targetFramework="4.0" />
</system.web>
<system.webServer>
<handlers>
</handlers>
</system.webServer>
</configuration>
我认为该错误与.NET 4有关,因为当您在applicationHost.config中放置没有预配置的部分时,它会显示带有灰色边框的错误,说明配置不正确。这就是我的期望。然后我添加了部分定义,一切似乎都工作我可以从控制台编辑配置 - 这意味着它现在正确解析。
但是当我尝试联系应用程序时,它会给出:
分析器错误消息:无法识别的配置部分mysection
在黄色背景上有一段配置。
或者我是否需要编写模块来使用该设置?目前我没有,只有配置中的文字。
答案 0 :(得分:0)
以下链接将帮助您了解此事。
http://www.codeproject.com/Articles/32628/ASP-NET-Custom-Web-Configuration-Section
http://www.4guysfromrolla.com/articles/032807-1.aspx
此致
答案 1 :(得分:0)
旧主题,但这些链接非常有用:
http://www.iis.net/learn/develop/extending-iis-configuration/configuration-extensibility
编辑(2016年5月25日): 有关如何在 applicationHost.config 文件中存储自定义信息的详细信息...我希望这会有所帮助!
注意:这些设置在IIS管理器上不可见。有一种方法可以做到这一点,但这超出了这种反应的范围。
要求: 需要扩展 applicationHost.config 文件的system.applicationHost / sites部分,以允许站点级别的 siteowner 属性。 (IIS默认情况下不允许我们这样做)。您也无法手动编辑 applicationHost.config 文件并添加自定义标记/属性。
步骤:
在%windir%\ system32 \ inetsrv \ config \ schema \下创建自定义架构(xml)文件。文件名:siteExtension_schema.xml
将最终要保存的自定义元素包含在该xml的applicationHost.config中,并使用适当的名称进行保存。要记住的关键是sectionSchema标记。因此,在扩展现有部分的模式时,只需创建一个元素并将name属性设置为与现有部分相同。在模式文件(见下文)中,我们定义了一个名为“system.applicationHost / sites”的文件 - 这与模式目录中默认IIS_Schema.xml文件中的sectionSchema名称相同。所以从本质上讲,你指示IIS添加这些
<!-- Contents of %windir%\system32\inetsrv\config\schema\siteExtension_schema.xml -->
<configSchema>
<sectionSchema name="system.applicationHost/sites">
<collection addElement="site">
<attribute name="owner" type="string" />
<attribute name="ownerEmail" type="string" />
</collection>
</sectionSchema>
</configSchema>
C:\> %windir%\system32\inetsrv\appcmd set site "Default Web Site" /owner:"John Contoso" /ownerEmail:"john@contoso.com"
C:\> %windir%\system32\inetsrv\appcmd list site "Default Web Site" /config
<system.applicationHost>
<sites>
...
<site name="Default Web Site" id="1" siteOwner="John Contoso" siteOwnerEmail="john@contoso.com">
...
...
</site>
</sites>
</system.applicationHost>
通过C#编程设置您的设置:
//this Will work with the ServerManager.OpenRemote("MyRemoteHostname") method also
using(var mgr = new ServerManager())
{
//Read
Console.WriteLine(mgr.Sites["Default Web Site"].Attributes["owner"].Value ); //Prints "John Contoso"
//Write
mgr.Sites["Default Web Site"].Attributes["owner"].Value = "New Owner";// Sets new value
mgr.CommitChanges(); // commits the changes to applicationHost.Config
}