我有一个带有自定义配置部分的 Web 应用程序。该部分包含我想加密的信息(希望使用 ASPNet_RegIIS 而不是自己做)。
网络配置:
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<section name="MyCustomSection"
type="MyNamespace.MyCustomSectionHandler, MyAssembly"/>
</configSections>
<configProtectedData>
<providers>
<clear />
<add name="DataProtectionConfigurationProvider"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
processorArchitecture=MSIL"
keyContainerName="MyKeyContainer"
useMachineContainer="true" />
</providers>
</configProtectedData>
<MyCustomSection>
<blah name="blah1">
<blahChild name="blah1Child1" />
</blah>
</MyCustomSection>
配置处理程序在尝试加密之前工作得很好。当我尝试使用以下方法对其进行加密时:
aspnet_regiis -pef "MyCustomSection" c:\inetpub\wwwroot\MyWebsite -prov DataProtectionConfigurationProvider
我收到一个错误:
加密配置部分...为 MyCustomSection 创建配置部分处理程序时出错:无法加载文件或程序集“MyAssembly”或其依赖项之一。该系统找不到指定的文件。(c:\inetpub\wwwroot\MyWebsite\web.config 第 5 行)
我尝试过配置/不配置提供程序。有/无部分组。有/没有事先启动网站。我已经尝试暂时将我的程序集放在 GAC 中进行注册。我还尝试了我的 log4net 部分,只是为了尝试不属于我的东西,但没有运气。我以管理员身份运行命令提示符。有任何想法吗?或者 ASPNet_RegIIS 不能用于自定义部分?
查看MSDN后的最后一个镜头是将我的处理程序更改为从 ConfigurationSection 继承而不是实现 IConfigurationSectionHandler,因为它在 2.0 中技术上已弃用(希望它与 aspnet_regiis 版本有关)。那里也没有运气。
任何想法让我知道。谢谢!