错误如下:(访问遭到拒绝)
===========================================================================
在 System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
在 System.Management.ManagementScope.InitializeGuts(Object o)
在 System.Management.ManagementScope.Initialize()
在 System.Management.ManagementObject.Initialize(Boolean getObject)
在 System.Management.ManagementClass.GetInstances(EnumerationOptions options)
在 System.Management.ManagementClass.GetInstances()
在 a7.a()
在 a7.b(String A_0)
在 a7.a(LicenseContext A_0, Type A_1, Object A_2, Boolean A_3)
在 System.ComponentModel.LicenseManager.ValidateInternalRecursive(LicenseContext context, Type type, Object instance, Boolean allowExceptions, License& license, String& licenseKey)
在 System.ComponentModel.LicenseManager.ValidateInternal(Type type, Object instance, Boolean allowExceptions, License& license)
在 System.ComponentModel.LicenseManager.Validate(Type type, Object instance)
在 Bingosoft.Workflow.Providers.OrganizationProvider.get_DefaultProvider()
在 InfoWeb.WayGoExtension.ToWorkflowUser(IUser wUser)
===========================================================================
故障原因:
由于在License校验时需要读取服务器的机器码进行校对,但访问站点的ASPNET帐户不具备访问服务器设备信息的权限导致此故障。
解决方法:(来自听棠.NET的博客)
===========================================================================
使用 System.Management 和 WMI
Windows Management Instrumentation (WMI) 具有强大的管理功能,您可以用它来管理和监视基于 Windows 的计算机。但是,当 ASP.NET 应用程序以 ASPNET 帐户运行时,此帐户只具有与“所有人”相同的默认访问权限。这些权限包括为本地计算机上的提供程序读取 WMI 数据、写入提供程序数据和执行方法。有关 WMI 安全机制的更多信息,请参见 WMI Platform SDK 文档或 MSDN。
注意:在没有 Service Pack 3 (SP3) 或更高版本的 Windows 2000 上,或在没有 Service Pack 1 (SP1) 或更高版本的 Windows XP 上,以 ASPNET 帐户运行的 ASP.NET Web 应用程序可能无法运行,并且您可能会收到“Access Denied (0x80041003)”(访问被拒绝 (0x80041003))错误信息。发生此错误是因为该帐户不具有足够的权限来访问某些 WMI 命名空间。若要解决此问题,请安装 Windows XP SP1 或更高版本,或者安装 Windows 2000 SP3 或更高版本。为变通解决此问题,请按照下列步骤操作:
1. | 打开“计算机管理”Microsoft 管理控制台 (MMC) 管理单元。 |
2. | 展开服务和应用程序,然后选择 WMI 控制。 |
3. | 右键单击 WMI 控制,然后单击属性。 |
4. | 在 WMI 控制属性对话框中,单击安全选项卡。 |
5. | 展开根目录,选择 CIMV2,然后单击安全。 |
6. | 在出现的安全对话框中,单击高级。 |
7. | 在访问控制设置对话框,单击添加。选择本地计算机名\NETWORK SERVICE,然后单击确定。 |
8. | 在权限项目对话框中,确保应用到设置为这个名称空间和子名称空间。 |
9. | 确保选中 Allow 'Enable Account'(允许“启用帐户”)和 Allow 'Remote Enable'(允许“远程启用”)复选框。 |
10. | 单击确定直到出现 WMI Control Properties(WMI 控制属性)对话框。 |
11. | 为您的应用程序将访问的其他 WMI 命名空间重复第 5 步到第 10 步。 |
12. | 重新启动 IIS。为此,请从命令行运行 IISRESET。 |
默认情况下,ASP.NET 为 ASPNET 帐户生成保密性强的密码。因此,只要该 ASPNET 帐户密码在计算机之间不是共享的或重置为非默认值的其他值,此替代方法就是安全的。
===========================================================================