Извините, если это немного долго whinded ... подумайте:Почему я получаю E_ACCESSDENIED, вызывая метод COM + из прокси-сервера?
У меня есть 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, и все хорошо.
Я затем изменить клиентское приложение таким образом, что он создает свою собственную реализацию 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 + приложение на машине В качестве прокси-сервера для машины А, а затем выполнить клиент, я получаю сообщение об ошибке E_ACCESSDENIED при вызове:
s.Execute(clientOptions);
Вот краткое описание кода выполнения на машина B доступа обрабатать
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 + приложение через прокси на другом машина?
Кажется, что если IOptions был создан сервером, тогда это нормально, но если он создан клиентом, то это не так.
Любая помощь была бы принята с благодарностью.
Thanks,
Carl.
Я подозреваю, что Decker и Oisin находятся на правильном пути в отношении разрешений, поскольку на самом деле машина A выполняет код с машины B, но разрешения на доступ к набору для меня являются загадкой. – Carl