Creé un proceso en AX 2012 que envía estados de cuenta a la dirección configurada en la ficha de cada cliente. La clase principal que desarrollé para ejecutar el proceso extiende la clase RunBaseBatch y en la propiedades de la clase le coloqué Server donde dice RunON.
El proceso debe correr en automático al programarle un batch, así que lo que hice fue asegurar:
1. Que mi instancia de AOS apunte al servidor en AX.
2. Que el servidor que elegí para correr el batch tiene habilitado el checkbox "Es servidor de procesos batch".
3. Checar la configuración del correo electrónico configurado en las fichas de los clientes en el módulo de cuentas por cobrar.
4. Revisar la configuración de los parámetros de correo electrónico en el módulo administración del sistema.
5. Revisar que tengo permisos en la configuración del report server configuration en AX
Hasta aquí todo está en orden. Entonces, en el módulo de administración del sistema me dirijo a consultas --> Tareas por lotes. Creo un job y le asigno la siguiente tarea: Enviar estados de cuenta, asegurándome que corra en servidor, que el nombre de la instancia del AOS sea la misma a la que está apuntando al servidor y asignarle mi clase que hace el proceso de envío.
Creado mi job entonces le programó la fecha y hora en la que corre el batch, dejándolo que corra el proceso cada 10 minutos sin límite de fecha fin.
Por último, cambio el estado del job a En Espera.
Hace dos semanas atrás mi job funcionaba, corriendo el batch y enviando los estados de cuenta a los correos configurados de cada cliente. Sin embargo, hace una semana se hizo un planchado de la instancia que comúnmente uso para desarrollar en AX. En ese entonces, no le dí importancia, sin embargo, ayer que traté de probar el batch con un nuevo job descubrí que no se estaban enviando los estados de cuenta. Así que revisé el historial del batch y encontré que en su estado marcaba "Error".
El batch detectó el siguiente error, "System.MethodAccess Exception: Attempt by method to Access Method failed".
Lo primero que hice fue correr mi clase de envio de forma manual sin el batch y descubrí que de forma manual mi clase realiza el proceso de envío sin que me marque error. Pero, el chiste de mi clase es que ejecute el proceso de manera automática cuando se corre el batch.
Sobre el error System.MethodAccess Exception: Attempt by method to Access Method failed, investigué que se debe a cuestión de permisos por las siguientes razones:
•
Un método privado, protegido, o interno que no sería accesible desde el código compilado normal se accede desde código de confianza parcial mediante la reflexión.
•
Un método crítico para la seguridad se accede desde código transparente.
•
El nivel de acceso de un método en una biblioteca de clases ha cambiado, y uno o más ensamblados que hacen referencia a la biblioteca no se han vuelto a compilar.
Mis preguntas son:
¿Alguien más le ha ocurrido este mismo error ya sea en AX o en otra aplicación?
Si es así, ¿A dónde debo dirigirme para ubicar este problema de permisos?
y ¿cuáles pasos debo de seguir para resolver este problema?
