|
|
#1 |
|
Участник
|
суть проблемы (ax3.0sp2):
метод WinAPI::copyFile копирует файл и в случае неудачи возвращает код ошибки WinAPI::getLastError(). НО все хорошо ТОЛЬКО при работе на клиенте, при вызове copyFile на сервере (серверный клас/метод) и возникновении ошибки копирования происходит следующее: CopyFileA говорит что ошибка есть, а getLastError возвращает 0 (как бы нет никакой ошибки), в результате функция WinAPI::copyFile возвращает 0 что в нашем случае обозначает "нет ошибки". 1) Возможные решения: а) проверять кодвозврта в getLastError и в случае результата 0 - подменять на что то общее, но это малоинформативно. б) поправить каждый метод использующий getLastError - т.е. в случае 0 возвращать свой код. 2) Интересно в каком паке это пофиксили (а может еще и не пофиксили) есть еще идеи ??
__________________
--- SHiSHok |
|
|
|
|
#2 |
|
Microsoft Dynamics
|
1.а) а если таки нет никаких ерроров, то тогда будет выдываться какой-то другой код как-будто еррор есть?
2) я вижу, что есть в сп2 какие-то изменения в getLastError // Syp Modifications - SP2 - BEGIN, может ревертнуть ? ![]() Возможно, что копирование происходит на сервере, а getLastError - на клиенте? в 4ке вообще эти 2 функции теперь с модификатором клиента. Но в 4ке есть метод обхода, насчет 3ки пока не видела
|
|
|
|
|
#3 |
|
Участник
|
В KR2 работает
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#4 |
|
Участник
|
Цитата:
Вызов getLastError обычно происходит в случае неудачного исполнения какой либо функции винапи, посему не вижу смысла вызова этого метода без видимых на то причин. По крайней мере вызов getLastError в классе WinAPI (и несколько методов др. классов) происходит именно из таких соображений . Цитата:
Насчет модификатора client: С точки зрения безопасности может это и правильно - клиент не получит доступа к ресурсам не имея доступ, но опять же - все в руках программиста. У меня же класс именно копирует пользователю данные, доступа к которым напрямую у него нет.
__________________
--- SHiSHok |
|
|
|
|
#5 |
|
Участник
|
Пока сделал так:
X++: client server static int getLastError() { int err; err = DLL::lastDLLError(); return err ? err : #ERROR_FILE_OPERATION; //SHiSHok, server site call returns 0 } по крайней мере теперь есть реакция на ненормальное завершение файловых операций.
__________________
--- SHiSHok |
|
|
| Теги |
| ax3.0 |
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Работа с файлами Excel | 2 | |||
| Работа с файлами | 1 | |||
| Dynamics AX Geek: Finding files with WinAPI | 0 | |||
| WinApi. Удаление файлов глючит. | 10 | |||
|