31.10.2007, 14:03 | #1 |
Участник
|
Не создается экземпляр SysMailer в RunBaseBatch
Добрый день!
Может кто сталкивался с подобной проблемой. AOS Application и Клиент - установлены на одной машине. Пытаюсь создать экземпляр класса SysMailer в методе run в классе наследованом от RunBaseBatch X++: public void run() { SysMailer mailer; ; mailer = new SysMailer(); mailer.SMTPRelayServer("*****",25, "******", "*****", true); mailer.quickSend("***@***.**", "***@***.**", "test", "test"); } Запускаем второго клиента. Запускаем на втором клиенте пакетный обработчик. При исполнении задания валится ошибка Сбой запроса на разрешение типа "InteropPermission". (S)\Classes\InteropPermission\demand (S)\Classes\COM\new (S)\Classes\SysMailer\new - line 1 (S)\Classes\NAT_T2MailSender\run - line 7 - здесь mailer = new SysMailer(); (S)\Classes\BatchRun\runJobStatic - line 63 (S)\Classes\BatchRun\runJob - line 55 (S)\Classes\BatchRun\do - line 54 (C)\Forms\BatchRun\Methods\doBatch - line 18 (C)\Forms\BatchRun\Methods\setStart - line 8 (C)\Forms\BatchRun\Methods\setRunning - line 7 (S)\Classes\BatchRun\run - line 26 (C)\Classes\BatchRun\main - line 10 Если же запустить данный код просто в Job: X++: static void Job_test_SysMailer(Args _args) { SysMailer mailer; ; mailer = new SysMailer(); mailer.SMTPRelayServer("*****",25, "******", "*****", true); mailer.quickSend("***@***.**", "***@***.**", "test", "test"); } Заранее спасибо ! Последний раз редактировалось pvito; 31.10.2007 в 14:06. |
|
31.10.2007, 18:29 | #2 |
Участник
|
Цитата:
Сообщение от pvito
Пытаюсь создать экземпляр класса SysMailer в методе run в классе наследованом от RunBaseBatch. При исполнении задания валится ошибка
Сбой запроса на разрешение типа "InteropPermission". (S)\Classes\InteropPermission\demand (S)\Classes\COM\new (S)\Classes\SysMailer\new - line 1 (S)\Classes\NAT_T2MailSender\run - line 7 - здесь mailer = new SysMailer(); Если же запустить данный код просто в Job то все выполняется нормально. X++: InteropPermission comPermission = new InteropPermission(InteropKind::ComInterop); SysMailer mailer; ; comPermission.assert(); mailer = new SysMailer(); // ... работа с SysMailer... CodeAccessPermission::revertAssert(); // опционально, но явный вызов - это теперь тоже Best Practices Последний раз редактировалось gl00mie; 31.10.2007 в 18:39. |
|
01.11.2007, 06:02 | #3 |
Участник
|
Спасибо огромное за помощь !!!
|
|
21.10.2011, 15:30 | #4 |
Участник
|
Цитата:
Метод new в в SysMailer делает assert в начале, так что его как бы можно вызывать уже не делая это в своем коде. Только они забыли про параметр по-умолчанию. X++: void new(COM c = new COM('CDO.Message')) { InteropPermission permission = new InteropPermission(InteropKind::ComInterop); ; permission.assert(); //пропущено } Должно быть что-то вроде: X++: void new(COM c = null) { InteropPermission permission = new InteropPermission(InteropKind::ComInterop); ; permission.assert(); if (prmIsDefault(c)) c = new COM('CDO.Message'); //пропущено } |
|
|
За это сообщение автора поблагодарили: coolibin (1). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|