Приложение DCom / OPC не подключается при работе в visual studio, но .exe прекрасно подключается - PullRequest
1 голос
/ 02 августа 2011

Я пишу OPC-клиент, который подключается к удаленному серверу и читает данные и т. Д. Я использую класс advosol BGServer. Проблема в том, что когда я запускаю программу в visual studio, я получаю следующую ошибку при добавлении группы.

"Исключение из HRESULT: 0x80040202"

Моя проблема похожа на (http://stackoverflow.com/questions/5978721/opc-server-access-remotely-using-opcda-net-tools),, однако я знаю, что настройки DCom настроены правильно, потому что, когда я запускаю один и тот же код, дважды щелкая по подключаемому файлу .exe, я могу добавить группу без проблем.

Поэтому я предполагаю, что visual studio работает под каким-то странным пользователем / группой, и испортил разрешения dcom (в основном с обратными вызовами).

изменить: код

BGServer server;
    private void Form1_Load(object sender, EventArgs e)
    {
        server = new BGServer(this);
        server.Connect(new OPC.Common.Host() { HostName = "xp-devbox2", UserName = "OPCUser", Password = "OPCUser" }, "FactoryTalk Gateway", null, ServerConnected); 
    }
    void ServerConnected(BGException ex, object tag)
    {
        if (ex != null)
        {
            label1.Text = ex.Message;
        }
        else
        {
            //we've connected to the server.  let's start subscribing to stuff!
            server.AddGroup("Tuner DataGroup", true, 1000, 0, null, null, new OnBGSrvAddGroup(GroupAdded));
        }
    }
    private BGGroup dGroup;
    void GroupAdded(BGException ex, BGGroup group, object tag)
    {

        if (ex != null)
        {
            label1.Text = ex.Message;
        }
        else label1.Text = "Group Added";
    }

1 Ответ

0 голосов
/ 18 августа 2011

Используете ли вы reg-free COM для связи с OPC?Когда вы используете «Процесс размещения Visual Studio», любые внешние файлы «.exe.manifest», которые вы создаете с помощью do reg-free COM, не будут перенесены в манифест процесса vshost.exe.

...