Проблема с открытием файла

  • Автор темы sanch
  • Дата начала
S

sanch

Доброго времени!
Есть код(агент) в котором получаю содержимое файла (NotesStream). Если этот агент вызываю другим агентом или по CORBA, то file.Bytes=0(возвращается пустой файл). Есть ли какие-нить ограничения? К примеру что Stream некорректно работает при "удаленном" вызове. Или может я что-то упустил?
Заранее благодарен за помощь!
 
S

sanch

Нет, тут все норм. хотя, заметил что при удаленном вызове если использовать path типа С:\temp\dir\file.xml то файл не находится. А если с:\file.xml то все норм, в stream определяется кодировка и тд, но данных все равно 0.
ЗЫ If Not xml_in.Open(filename$) возвращает true, а данных 0 :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
похоже на путаницу с путями и расположением файла (сервер/клиент)
на компе есть temp, на серваке - нет, вот и колбасит
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Ну так создал новый файл и вернул true.
 
S

sanch

То есть не нашел файл и создал?

Если так то почему находит если вызывать "напрямую" ?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
потомучта исполняется там, где запущен агент (напрямую)
 
S

sanch

точно!как то не подумал. написал сетевой путь все заработало.
Хорошо что это для теста. В норм режиме буду запихивать InputStream(java) в RT и с ним работать без NotesStream.
Спасибо за подсказку.
 
A

Anonimous

Можно спросить? Тоже тут с файлами )
Ситуация такая. Я делаю синхронизацию между лотусовой БД и Web. База лежит на сервере, назову его машина А.
Т.е. Лотус и Web обмениваются файлами xml, которые лежат в разделяемой папке FolderSh на машине с известным ip, назову ее машина Б.
В базе на сервере есть агент синхронизации LNSynchronizationFromWeb. Этот агент выполняется либо по расписанию, либо вызывается через браузер запросом URL.
Агент просто подхватывает файлы xml, которые лежат на машине Б, читает из них данные, по этим данным вносит изменения в документы Лотус. Информация из одного файла предназначена только для одного документа Лотус, в файле xml хранится UNID нужного документа.
Этот агент выполняется либо по расписанию - подхватывает все файлы в папке и осуществляет массовую синхронизацию.
Либо выполняет единичную синхронизацию посредством его вызова через запрос в браузере. Например, для файла test. Имя файла передается как параметр, этот файл берется из разделяемой папке - и идет единичная обработка

сервера/БД/LNSynchronizationFromWeb?OpenAgent&test

Если пустить массовую синхронизацию, то все нормально.
Вот у меня вопрос по доступу к файлам в случае единичной синхронизации.
На машине Б Лотус не стоит. А Лотус не любит выходить за границы своего каталога, NotesStream не хочет открывать файлы в таком случае. Значит, надо будет клиент Лотус ставить на машине Б, чтоб в папку Data кинуть разделяемую папку FolderSh с файлами?
Или к файлам как-то можно сетевое имя прописать?

Я прописываю сетевой путь к папке, указанный в ее свойствах на вкладке "Доступ", но вот при вызове

stDirLoad$ = {Сетевой путь к папке на вкладке "Доступ"} & "*.*"
stFName$ = Dir$(stDirLoad$, 0)

в log пишет ошибку, что директория с таким сетевым именем не найдена.

Буду очень благодарен за любой совет )
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
542
хм... на самом деле можно подрубиться к сетевому пути.
Попробуйте подключить ту папку как сетевой диск и обращаться через букву диска. На сервере.
Вот еще есть почти профильный вопрос, только там сохранение:
link removed

Однако я не силен с web вызовом агентов и особенностей, возможно агент отрабатывает не на сервере...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
юзер систем - может и не будет нормально работать с сетевыми ресурсами, ведь оно локальный юзер...
можно:
- пущать домину под доменной учеткой
- сделать одноранговую шару на удаленном сервере (не доменную) и завести там локального юзера (соответ домине)
- соединяться по имени/паролю зашитому в агент, к шаре (вариант неоднозначный)

Добавлено: а ваще, для сервисных домины нужд юзать виндовые шары - это камасутра какая-то, есть FTP, SSH...
кот. быстрее/секьюрнее SMB
 

rinsk

Lotus Team
12.11.2009
1 156
126
BIT
46
...
На машине Б Лотус не стоит. А Лотус не любит выходить за границы своего каталога, NotesStream не хочет открывать файлы в таком случае. Значит, надо будет клиент Лотус
...

Уже много-много раз возникает такого рода вопросы.
И NotesStram и input\write\dir замечательно работают с разного рода сетевыми шарами. Но только тогда, когда имеется представление о работе сетевых служб Windows:)

В Вашем случае в св-вах шары достаточно дать права той машины, на которой крутится Домино.
 
A

Anonimous

А я WNetAddConnection2 мучаю, не могу понять причины того, что оно возвращает 1312

Здесь нашел



В Вашем случае в св-вах шары достаточно дать права той машины, на которой крутится Домино.

А можно подробнее )) С свойствах шары на вкладке "Доступ" в Общем доступе стоит Все.

Я эту шару и как сетевой диск подключал к машине А (на которой сервер Лотус стоит)
Все равно по расписанию агент запускается от имени сервера - не находит.

Еще вот что. На машина А стоит XP, на Б - Windows 7.

Уже много-много раз возникает такого рода вопросы.

А где почитать? :(
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
542
На машина А стоит XP, на Б - Windows 7.
О как! Это 2 сервера у вас под не серверными ОСями ?)





 
A

Anonimous

УРА! Поехало!
Только не пойму, что же я такого сделал
А делал вот что:

1. У себя, на своей машине (не на машине А или Б) делал подключение к общему сетевому ресурсу в cmd

net use \\IP-адрес машины Б\C$ Пароль /user:Имя пользователя
Команда выполнилась успешно

2. На машине Б вошел в Панель управления - Центр управления сетями и общим доступом - Дополнительные параметры общего доступа и там сделал "Отключить общий доступ с парольной защитой". Теперь включил, правда

Но работает!
И еще в варианте использования WNetAddConnection2 (см. ссылочку выше)

на строке retCode = WNetAddConnection2(netRes, SYS_PASSWORD, SYS_USERNAME, 0)

SYS_USERNAME пишу так: "Имя домена\Логин пользователя"

Хотя даже вчерашняя версия агента, где WNetAddConnection2 для входа я не использую, тоже получает доступ к папкам.

Но вот общий доступ с парольной защитой в дополнительных параметрах Общего доступа я опять включил.
Не пойму, это, значит я подключил сетевой ресурс с помощью net use, и это все решило?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!