以编程方式生成IIS应用程序密钥

时间:2015-08-07 13:45:26

标签: c# asp.net iis command-line

使用IIS管理器GUI,可以轻松使用' Connections'树状视图导航到一个应用程序,在ASP.Net下打开'机器密钥',然后点击生成密钥'为了在应用程序之间建立共享ASP.Net会话而为您的应用程序生成密钥。

然而,当我阅读Generate a Machine Key的文档时,我唯一得到的是神秘的

  

使用以下WMI类,方法或属性来执行此操作   过程:

     

MachineKeySection类。通过设置生成密钥   属性,所以不需要任何方法。)

不正确的标点符号不会增强我的信心,而且我不确定如何实施此建议。如何通过命令行为我的IIS应用程序生成验证和解密密钥?我也愿意通过C#生成它们。

2 个答案:

答案 0 :(得分:0)

您可以使用System.Management中的ManagementClass类连接到WMI。使用此类可以操作WMI实例。 请按照以下步骤进行操作:

  1. 创建新的控制台应用程序。

  2. 添加对System.Management程序集的引用。

  3. 使用以下语句添加语句

    using System.Management
    
  4. 使用以下代码连接到MachineKeySection类。

    string NamespacePath = "\\\\.\\ROOT\\WebAdministration";
    
    string ClassName = "MachineKeySection";
    
    ManagementClass oClass = new ManagementClass(NamespacePath + ":" + ClassName);
    
    foreach (ManagementObject oObject in oClass.GetInstances())
    {
        Console.WriteLine("ApplicationName : {0}", oObject["ApplicationName"]);
    }
    
  5. 您可以使用以下屏幕截图来检查可用的属性和方法。 WMI Explorer

  6. enter image description here

答案 1 :(得分:0)

我猜你可以使用RNGCryptoServiceProvider类使用PowerShell生成所需的密钥。它与IIS管理器本身用于生成这些密钥的类相同。

我从this博客了解到IIS管理器使用该类的方式。

  

使用IIS 7,您不再需要手动执行此操作。 IIS 7.0管理器具有内置功能,您可以使用它来生成这些密钥。它在内部使用RNGCryptoServiceProvider来创建随机密钥。

帖子的作者是微软员工 - 虽然我不认识他。

Here是使用PowerShell脚本方法的一个示例。