OPC UA:如何从Session中获取Authentication Token?
OPC UA客户端获取Authentication Token的简便方案
推荐方案:直接使用库封装的服务方法
你完全不需要手动构造RequestHeader来调用DeleteNodes服务。OPC UA的.NET客户端库已经封装了DeleteNodes的调用逻辑,会自动填充包含正确Authentication Token的RequestHeader。示例代码:
// 构造要删除的节点列表 var nodesToDelete = new List<DeleteNodesItem> { new DeleteNodesItem { NodeId = new NodeId("ns=2;s=YourTargetNode"), DeleteTargetReferences = true } }; // 直接调用库的内置方法,无需手动处理RequestHeader await session.DeleteNodes(nodesToDelete).ConfigureAwait(false);
手动构造RequestHeader时的获取方式
如果确实需要手动构造RequestHeader,有两种简便方式获取Authentication Token:
- 方式一:使用Session公开的RequestHeader属性
Session类提供了公开的RequestHeader属性,该对象已经预填充了Authentication Token,直接取用即可:if (session.Connected) { m_session = session; var requestHeader = session.RequestHeader; var authenticationToken = requestHeader.AuthenticationToken; // 用此token构造自定义RequestHeader } - 方式二:直接取Session的Id属性
在OPC Foundation的UA .NET标准库中,Session的AuthenticationToken与Id属性指向同一个NodeId实例,因此可以直接通过session.Id获取:var authenticationToken = session.Id;
以上方法均无需自定义Session子类,完全利用库的公开API实现,简洁且符合框架设计规范。
内容的提问来源于stack exchange,提问作者Kaasper
相关产品推荐
相关产品推荐

