.net ServiceConfiguration.cscfg中的自定义/嵌套XML设置
我们正在尝试在Azure应用程序中实现一些动态可配置的登录,我们正在使用企业库来实现这一点,这很好,但是,实现这一点所需的xml比ServiceConfiguration.cscfg文件似乎接受的简单“appSetting”样式设置更复杂,因为它需要嵌套的xml节点 e、 g.net ServiceConfiguration.cscfg中的自定义/嵌套XML设置,.net,logging,azure,enterprise-library,.net,Logging,Azure,Enterprise Library,我们正在尝试在Azure应用程序中实现一些动态可配置的登录,我们正在使用企业库来实现这一点,这很好,但是,实现这一点所需的xml比ServiceConfiguration.cscfg文件似乎接受的简单“appSetting”样式设置更复杂,因为它需要嵌套的xml节点 e、 g 解决方法是(请原谅此窗口中的格式): 我看不出有什么办法可以愚弄ServiceDefinition或ServiceConfiguration文件来接受这一点,尽管如果可以,我可以找到一种方法告诉企业库使用我可以在a
解决方法是(请原谅此窗口中的格式):
我看不出有什么办法可以愚弄ServiceDefinition或ServiceConfiguration文件来接受这一点,尽管如果可以,我可以找到一种方法告诉企业库使用我可以在app.config中执行的ServiceConfiguration文件
我们之所以试图解决这个问题,是为了让我们能够动态调整日志记录的设置,即从无日志记录更改为详细记录,而无需重新部署,这在我们的实时应用程序中非常耗时且不切实际,因为该应用程序最近才上线,所以可能仍然存在奇怪的错误;-)
如果您有任何想法,我们将不胜感激
当做
Kindo Malay目前,服务配置文件仅限于基本的
结构
但该值只是一个字符串值。当需要更具表现力的内容时,我所做的是将XML作为字符串放入设置的值中,然后在读取时将其反序列化为XML。当您直接编辑配置文件时,这确实会让它看起来很难看,因为它对您设置中的所有XML进行编码,但确实有效
如果我们只查看您的“侦听器”部分,以保持示例的小型化:
<listeners>
<add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
type="OurSolution.Common.AzureDiagnosticTraceListener, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
name="AzureDiagnosticTraceListener" />
</listeners>
这可以放在ServiceConfiguration文件中,如下所示:
<Setting name="Logging" value="<listeners><add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" type="OurSolution.Common.AzureDiagnosticTraceListener, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="AzureDiagnosticTraceListener" /></listeners>" />
最简单的方法是获取源XML,替换所有选项卡和回车符,并通过“云项目属性设置”部分更新设置
一旦部署完成,对其进行更改并不完全是直截了当的,但却是可行的。其他选项:
- 对任意配置进行Base64编码,并将其放入cscfg的值中
- (我最喜欢的)只需在blob存储或数据库中保留额外的配置(使管理部署的工作更简单)
<listeners>
<add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
type="OurSolution.Common.AzureDiagnosticTraceListener, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
name="AzureDiagnosticTraceListener" />
</listeners>
<Setting name="Logging" value="<listeners><add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" type="OurSolution.Common.AzureDiagnosticTraceListener, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="AzureDiagnosticTraceListener" /></listeners>" />