我不仅将 machine.config 用于 ASP.NET,还用于整体配置。我在 C# 中实现了一个哈希算法(Tiger),并希望它可以通过机器请求获得。因此,在 GAC 中注册了我的程序集并将以下内容添加到 machine.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<mscorlib>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass Tiger192="Jcs.Tiger.Tiger192, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/>
<cryptoClass Tiger160="Jcs.Tiger.Tiger160, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/>
<cryptoClass Tiger128="Jcs.Tiger.Tiger128, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/>
</cryptoClasses>
<nameEntry name="Tiger" class="Tiger192"/>
<nameEntry name="TigerFull" class="Tiger192"/>
<nameEntry name="Tiger192" class="Tiger192"/>
<nameEntry name="Tiger160" class="Tiger160"/>
<nameEntry name="Tiger128" class="Tiger128"/>
<nameEntry name="System.Security.Cryptography.HashAlgorithm" class="Tiger192"/>
</cryptoNameMapping>
<oidMap>
<oidEntry OID="1.3.6.1.4.1.11591.12.2" name="Jcs.Tiger.Tiger192"/>
</oidMap>
</cryptographySettings>
</mscorlib>
</configuration>
这使我的代码看起来像这样:
using (var h1 = HashAlgorithm.Create("Tiger192"))
{
...
}
并且在我的代码中完全不依赖于 Jcs.Tiger.dll 程序集,无论是硬的还是软的。