Interop.OpcAutomation.dll не может подключиться к удаленному серверу Opc. Ошибка: отказано в доступе

Я пытаюсь подключить удаленный сервер OPC от клиента с помощью C #. Я получил Interop.OpcAutomation.dll от OPC Foundation, и он очень хорошо работал с локальным сервером opc, но когда доходит до подключения удаленного сервера opc, он каким-то образом показывает доступ запрещен (HRESULT: 0x80070005 (E_ACCESSDENIED)).

Вот код:

this._reqServer = new OPCServer();
this._reqServer.Connect("OPC.SimaticNET.1", "MachineName"); //Here it throws exception

Итак, вот что я уже пробовал:

  1. Настроил разрешение в DCOM в MyComputerProperties и OPCEnum.
  2. Я проверил со сторонними клиентами, такими как OpcQuickClient, и он может получить доступ к удаленному серверу opc от того же клиента, что заставляет меня прийти к выводу, что конфигурация на стороне сервера в порядке.

Итак, кто-нибудь пытался создать клиент C #, который может получить доступ к удаленному серверу opc, скажите, пожалуйста, что еще нужно сделать?


person ThomasBecker    schedule 14.04.2015    source источник
comment
Я отредактировал ваше название. См. Должны ли вопросы включать «теги» в свои заголовки?, где нет единого мнения, не следует.   -  person John Saunders    schedule 24.04.2015


Ответы (3)


Создайте на своем компьютере локального пользователя с тем же именем пользователя и паролем, что и на сервере. Щелкните правой кнопкой мыши Visual Studio и выполните запуск от имени этого пользователя.

person ambassallo    schedule 24.04.2015
comment
Да то же имя пользователя и тот же пароль. - person ambassallo; 25.04.2015

+1 за ответ ambassallo. У меня есть два сервера (серверы Win Server 2016) в двух разных подключенных сетях. Один сервер находится в домене, а другой - автономно. У меня установлено соединение OPC-DA между ними. Единственный способ заставить их подключиться (после настройки всех DCOM, OPCEnum и т. Д. И отключения брандмауэров - это войти на обе машины как один и тот же пользователь Windows (локальный пользователь на каждом сервере), а затем подключить клиента к серверу.

person Mark Walker    schedule 11.12.2018

Мой способ - предоставить доступ к серверу локальной группе, создать пользователя на стороне сервера и определить этого пользователя как члена созданной мной локальной группы. После того, как я создам того же пользователя на клиентской машине с тем же паролем, который я использую на стороне сервера. Настройте ВСЕ разрешения DCOM, перезагрузитесь и попробуйте подключиться. Не забывайте, нигде не используйте NAT.

person Carlos Bomfim    schedule 21.02.2020