You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Web API部署IIS后连接OPC DA服务器的权限配置问题

解决IIS部署.NET Web API连接OPC DA服务器的权限与连接问题

问题概述

开发的.NET Web API作为传统OPC DA服务器的隧道,使用TitaniumAS.Opc.Client库连接OPC服务器。在Visual Studio中运行正常,但部署到IIS后出现两类问题:

  • 使用默认ApplicationPoolIdentity作为应用池标识时,OPC连接被拒绝,错误信息如下:
Error connecting to host <hostname> because 
System.Runtime.InteropServices.ExternalException (0x80070005): CoCreateInstanceEx: Access is denied.
at TitaniumAS.Opc.Client.Interop.System.Com.CreateInstance(Guid clsid, String host, NetworkCredential credential)
at TitaniumAS.Opc.Client.Interop.System.Com.CreateInstanceWithBlanket(Guid clsid, String host, NetworkCredential credential, ComProxyBlanket comProxyBlanket)
at TitaniumAS.Opc.Client.Common.OpcServerEnumeratorAuto.CLSIDFromProgId(String progId, String host)
at TitaniumAS.Opc.Client.Da.OpcDaServer.<>c__DisplayClass19_0.<Connect>b__0(String host, String progId)
at TitaniumAS.Opc.Client.Common.UrlParser.Parse[T](Uri opcServerUrl, Func`3 withProgId, Func`3 withCLSID)
at TitaniumAS.Opc.Client.Da.OpcDaServer.Connect()
   at RestOPC.Controllers.ValuesController.Read(OPCrequestRead data) 
in C:\...\ValuesController.cs:line 54
  • 将应用池标识改为有权限连接OPC的opc_user后,Web API请求被强制关闭,错误信息如下:
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))

解决思路与步骤

1. 配置DCOM权限以允许opc_user访问OPC服务器

OPC DA基于DCOM通信,需确保opc_user拥有足够的DCOM权限:

  • 运行dcomcnfg打开组件服务,依次展开组件服务 > 计算机 > 我的电脑 > DCOM配置
  • 找到目标OPC服务器对应的DCOM对象,右键选择属性
  • 在安全选项卡中:
    • 配置启动和激活权限:点击编辑限制,添加opc_user并赋予对应权限(本地/远程启动、激活,根据部署场景选择)
    • 配置访问权限:点击编辑限制,添加opc_user并赋予本地/远程访问权限
  • 若OPC服务器在远程机器,需在该机器的本地安全策略中,给opc_user添加以下用户权限:
    • 作为批处理作业登录
    • 作为服务登录
    • 从网络访问此计算机

2. 配置IIS应用池与站点的权限

将应用池标识改为opc_user后,需确保该用户拥有Web API运行所需权限:

  • 找到Web API的部署目录,右键属性 > 安全,添加opc_user并赋予读取&执行、列出文件夹内容、读取权限
  • 检查IIS站点的身份验证设置:
    • 若使用匿名身份验证,确保其匿名用户标识设置为应用池标识(即opc_user)
    • 若启用其他身份验证方式,需确保客户端凭据能正确传递,且opc_user拥有对应权限
  • 检查应用池高级设置:
    • 若OPC服务器为32位,需启用启用32位应用程序选项
    • 确认.NET CLR版本与Web API项目的目标框架匹配

3. 排查10054连接重置错误

该错误通常与防火墙、网络或权限配置相关,可通过以下方式排查:

  • 查看Windows事件查看器:检查系统日志(DCOM相关错误)和IIS日志(请求失败的详细信息)
  • 本地测试OPC连接:使用opc_user登录IIS服务器,运行基于TitaniumAS.Opc.Client的测试程序连接OPC服务器,确认连接是否正常
  • 检查防火墙设置:
    • 在IIS服务器上,允许HTTP/HTTPS端口(默认80/443)的入站流量
    • 在OPC服务器上,允许DCOM相关端口(默认135端口+动态端口范围)的入站流量;跨机器部署时需在两台机器的防火墙中开放对应端口

4. 额外注意事项

  • 若OPC服务器与IIS服务器为不同机器,建议使用域用户作为opc_user;若使用本地用户,需在两台机器上创建用户名和密码完全一致的本地用户
  • 确认Web API代码中OPC服务器的连接配置正确:使用正确的ProgID/CLSID,未硬编码错误凭据(应用池标识运行时会自动使用opc_user的身份)

内容的提问来源于stack exchange,提问作者Dariva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:15:40