21.04.2010, 11:52 | #1 |
Участник
|
Работает WEB доступ через NAS сервер.Все нормально, но! Если возникает ошибка, то NAS сервер пишет его в лог сообщений Windows. Я могу его прочитать, но как определить к какому пользователю данная ошибка?
Хочется что бы пользователь смог прочитать ответное сообщение. Аналогично и с предупреждениями. |
|
21.04.2010, 14:16 | #2 |
Участник
|
Цитата:
Сообщение от gr_nik@mail.ru
Работает WEB доступ через NAS сервер.Все нормально, но! Если возникает ошибка, то NAS сервер пишет его в лог сообщений Windows. Я могу его прочитать, но как определить к какому пользователю данная ошибка?
Хочется что бы пользователь смог прочитать ответное сообщение. Аналогично и с предупреждениями. |
|
21.04.2010, 15:04 | #3 |
Участник
|
Вплоть до шестой версии (ака 2009) NAS является однопоточных приложением, в один момент времени обрабатывается только один запрос к серверу приложений. Сравнение времени появления записи в логе подключений от веб-сервера (надеюсь есть такой и сразу после записи в лог стоит commit ) со временем появления записи в event логе однозначно определит пользователя и ошибку.
Если Вы используете Navision версии 5.0 и выше и не используете транзакции записи - поможет обработка входящего XML запроса с мягким гашением ошибок и получением текста последней ошибки (примерно так): ProcessXML.setDOC(xmlDOC); if not ProcessXML.run then AddError(xmlDoc, GetLastError); Насколько я помню, при использовании User Portal Pipe в версии NAS 3.70 предупреждения и сообщения валились в выходищий XML, причем на confirm'ы выдавались заданные по дефолту ответы, про Commmunication компоненты ничего сказать не могу, реализация сокетов с ограничением размера пакета толи в 32, толи в 64 кБ (лишнее просто обрезалось) окончательно убила во мне веру в возможность нормальной интеграции НАВ через NAS . |
|
21.04.2010, 19:03 | #4 |
Участник
|
Я использую Navision 4.0 SP2. Проверку по времени я делаю, но... это не помогает(вернее помогает не всегда). Так как я могу знать только время отправки сообщения NAS серверу, если я считываю сообщение после этого, то оно может принадлежать другому потоку, который NAS сервер обрабатывал в момент отправки сообщения.
Но за ответ спасибо. По крайней мере копать дальше не буду... |
|
22.04.2010, 11:53 | #5 |
Участник
|
Цитата:
Сообщение от gr_nik@mail.ru
Я использую Navision 4.0 SP2. Проверку по времени я делаю, но... это не помогает(вернее помогает не всегда). Так как я могу знать только время отправки сообщения NAS серверу, если я считываю сообщение после этого, то оно может принадлежать другому потоку, который NAS сервер обрабатывал в момент отправки сообщения.
У Вас пул из нескольких NAS или особый многопоточный NAS (мне до 2009 попадались только однопоточные)? Алгоритм организации обработки запросов для корректного поиска ошибки: 1. При приеме XML первым делом ищем необработанные записи из лога Нава (нет метки что запрос завершился успешно, нет метки что ощибка обработана). 2. Если запись есть (согласно алгоритму всегда будет не более одной) - ищем последнюю ошибку в логе Винды. Сопоставляем ошибку (лог Винды) и пользователя (лог Навижна). В запись лога Нава дописываем текст ошибки и ставим метку что ошибку обработана. 3. Перед обработкой запроса пишем в лог Нава и коммитим. После обработки в лог Нава пишем что запрос завершился успешно. Техническая реализация обработки на стороне клиентской части в данном случае не имеет значения - ошибку в XML можно выдать при любом следущем запросе от пользователя, либо диспетчер на стороне клиентской части может специальным запрос спросить текст последней ошибки при получении XML без метки "запрос обработан успешно". |
|