Почему NotesSession.GetDatabase () может возвращать ноль? - PullRequest
2 голосов
/ 06 апреля 2010

Я пытаюсь открыть names.nsf в коде. Кусок кода работал некоторое время, но внезапно я обнулялся. Есть идеи почему? Кажется, я не получаю никаких ошибок и не знаю, как понять, что не так.

Я могу открыть базу данных из клиента Notes на том же компьютере.

UPDATE

Вот код. Поля инициализируются в конструкторе. Пустая ссылка появляется в сообщении .IsOpen ().

public class DominoPersonSearcher
{
    private string _serverName;
    private string _databaseFileName;
    private string _password;
    private Domino.NotesDatabase OpenDatabase(out Domino.NotesSession notesSession)
    {
        notesSession = new Domino.NotesSessionClass();
        notesSession.Initialize(this._password);

        Domino.NotesDatabase notesDatabase;
        notesDatabase = notesSession.GetDatabase(this._serverName, this._databaseFileName, false);

        if (!(notesDatabase.IsOpen))
        {
            notesDatabase.Open();
        }
        return notesDatabase;
    }

Этот код является C # и работает на веб-сервере; это не внутри БД - он работает за пределами Notes, просто обращаясь к нему. Я использовал этот точный механизм много раз. Он использует оболочку .NET вокруг COM-объектов Lotus Domino COM C: \ notes \ domobj.tlb, которая называется Interop.Domino.dll. Domino установлен на другом сервере.

Ответы [ 2 ]

6 голосов
/ 06 апреля 2010

Возвращение нуля из getdatabase означает, что вы не можете получить доступ к базе данных. Если вы используете его как агент Java, он будет работать с вашими привилегиями. Сервер может быть настроен для ограничения доступа к базам данных через агентов на сервере.

Попробуйте открыть другую базу данных на сервере, к которому у вас есть тот же уровень доступа, или базу данных, к которой у вас есть доступ менеджера. Делая это, проверяет, можете ли вы открывать базы данных через агентов на сервере. Если вы не можете открыть эту базу данных, то это похоже на проблему с правами доступа к серверу. Это не сама база данных, потому что вы можете получить к ней доступ через клиент Notes.

Одним из способов решения этой проблемы является то, что вы также можете указать агенту запускаться под идентификатором сервера. Это обычно позволяет обойти проблемы с доступом. Параметры безопасности агента - последняя вкладка в диалоговом окне «Свойства агента». Обратите внимание, что этим параметром также можно управлять через настройки сервера, и вы получите сообщение об ошибке, если вам тоже не разрешено это делать. Дайте мне знать, как вы идете ..

1 голос
/ 01 июня 2012

У меня была такая же проблема. Я закрыл Lotus Mail, и приложение работало нормально.

notesSession.GetDatabase(this._serverName, this._databaseFileName, false);

Здесь база данных уже доступна почтовому серверу lotus. Вот почему мы получаем нулевые значения.

Это не проблема привилегий.

...