IIS 用户在组件服务上的权限不足导致的问题





3.00/5 (5投票s)
当我们在应用程序中使用 COM 组件时,有时会发生 API 失败的错误,该错误来自 COM 组件。本文将帮助解决此问题。
引言
当我们在 ASP.NET 应用程序中使用 COM 组件时,有时会发生 API 失败的错误,该错误来自 COM 组件。这些类型的问题是由代码访问安全 (CAS) 引起的,因为 IIS 用户权限不足。
本文旨在解决此问题。
使用代码
当我们在应用程序中使用 COM 组件时,有时会发生 API 失败的错误,该错误来自 COM 组件。例如,当我们使用 Microsoft Word 11.0 对象库通过 Word API 打开 Word 文件时。在这种情况下,我们创建 Word 的实例,打开文档,并计算其中的单词数。有时会发生错误,API 失败。
这个问题的原因在于 Internet Information Services 和组件服务之间的交互中出现错误。每当 IIS 收到调用 COM 组件 API 的请求时,IIS 会使用其 IIS 用户引用组件服务中的该组件。但是,由于 IIS 用户对该组件的权限不足,代码访问安全 (CAS)(CLR 的一部分)会引发错误。
CAS 根据机器的安全配置授予应用程序权限。但是,如果 IIS 用户没有组件的权限,CAS 会引发运行时错误,显示 API 失败并返回 COM 异常。
解决此问题的办法是向 IIS 用户授予组件的权限。
以下是在 COM 组件上授予 IIS 用户权限的过程
- 在控制面板的“管理工具”中,转到“组件服务”。
- 右键单击我们要使用的组件。
- 转到“安全”选项卡,然后单击“启动和激活权限”部分中的“编辑”按钮。
- 转到“组或用户名”,然后单击“添加”按钮,以将 IIS 用户添加到组件中。
- 在给定的文本框中输入类似“MachineName\UserName”的 IIS 用户名。
- 如果您想查找 IIS 用户,请单击“高级”按钮。
- 添加该用户后,它将显示在“安全”选项卡中。
从“IIS 用户的权限”部分授予以下权限
- 本地启动
- 远程启动
- 本地激活
- 远程激活
就是这样!