3

目标:在调用继承自 ProtectedConfigurationProvider 的类的 Initialize 方法期间,使用 .NET Framework 4.5 查找正在运行的 ASP.NET Web 应用程序的 BaseDirectory。

问题:.NET Framework 4.5 更改了 ProtectedConfigurationProvider 类在哪个域下运行(也许还有在应用程序的生命周期中调用该类时?)

在安装 .NET Framework 4.5 之前,可以在继承自 ProtectedConfigurationProvider 的类的 Initialize 或 Decrypt 方法期间使用“AppDomain.CurrentDomain.BaseDirectory”进行检索。这将解决类似于“c:\inetpub\wwwroot\xyz\”的问题

安装 .NET Framework 4.5 后,在 Initialize 或 Decrypt 方法期间,“AppDomain.CurrentDomain.BaseDirectory”解析为类似于“C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\”的内容。

用例:使用自定义“ProtectedConfigurationProvider”类将配置数据调用从 web.config/app.config 重定向到应用程序目录中的自定义配置文件。(例如http://www.wrox.com/WileyCDA/Section/Redirecting-Configuration-with-a-Custom-Provider.id-291932.htmlhttps://github.com/kellyhughes/ConfigPTFE)。这在具有“configProtectionProvider”属性的配置节点中使用。该库被各种应用程序类型(例如 winforms、wpf、windows 服务、Web 应用程序)使用。上面提到的问题仅发生在 Web 应用程序的上下文中。

注意:在调用此方法时,我知道要依靠从中收集信息的大多数对象都是空的。例如,HttpContext 和 Server.MapPath 无济于事,因为此时它们似乎不存在。是的,我也知道还有其他方法可以将配置文件与主配置分开。这个自定义库提供了使用“file”或“configSource”属性等无法提供的附加功能。

4

0 回答 0