Извините, если это немного надульно ... учтите:
У меня есть приложение COM + в пространстве имен с именем Компания , которое предоставляет объект с именем Сервер , который имеет следующие методы:
bool Server.Execute(IOptions options)
IOptions Server.CreateOptions()
IOptions просто имеет несколько логических свойств чтения / записи следующим образом:
IOptions.Option1 (bool)
IOptions.Option2 (bool)
Я создаю клиентское приложение со следующим кодом:
Company.Server s = new Company.Server();
Company.IOptions serverOptions = s.CreateOptions();
serverOptions.Option1 = false;
serverOptions.Option2 = true;
s.Execute(serverOptions);
Я устанавливаю приложение COM + на компьютер A, а затем запускаю клиент на компьютере A, и все в порядке.
Затем я изменяю клиентское приложение, чтобы оно создавало собственную реализацию IOptions следующим образом:
public class ClientOptions : Company.IOptions
{
public bool Option1 { get; set; }
public bool Option2 { get; set; }
}
Company.Server s = new Company.Server();
ClientOptions clientOptions = new ClientOptions();
clientOptions.Option1 = false;
clientOptions.Option2 = true;
s.Execute(clientOptions);
Опять же, я выполняю клиентское приложение на компьютере A, и все хорошо.
Если я устанавливаю приложение COM + на компьютер B в качестве прокси-сервера на компьютер A, а затем выполняю клиент, я получаю ошибку E_ACCESSDENIED при вызове:
s.Execute(clientOptions);
Вот сводка кода, выполняющегося на машине B, обращающейся к машине A
Company.Server s = new Company.Server();
Company.Options serverOptions = s.CreateOptions()
serverOptions.Option1 = false;
serverOptions.Option2 = true;
s.Execute(serverOptions); // this is fine
ClientOptions clientOptions = new ClientOptions();
clientOptions.Option1 = false;
clientOptions.Option2 = true;
s.Execute(clientOptions); // this causes the error
Подводя итог, почему я могу реализовать свои собственные IOptions и использовать их в приложении COM +, когда клиент находится на той же машине, что и приложение COM +, но не когда клиент обращается к приложению COM + через прокси-сервер на другой машине? 1029 *
Кажется, что если IOptions был создан сервером, то это нормально, но если он создан клиентом, то это не так.
Любая помощь будет принята с благодарностью.
Спасибо
Карл.