2013-04-15 5 views
0

AutoSys 및 WebSphere MQ가 설치된 Windows Server 2008에서 실행되는 .NET 콘솔 응용 프로그램이 있습니다 (이 응용 프로그램은 WebSphere MQ에 메시지를 보내는 데 사용됩니다).AutoSys에서 .NET 응용 프로그램을 실행할 때 오류가 발생했습니다.

10 분마다 콘솔 응용 프로그램을 호출하는 AutoSys 작업을 설정하려고합니다.

서버에 로그인하고 명령 줄을 사용하여 응용 프로그램을 실행하면 응용 프로그램이 올바르게 작동합니다.

하지만 AutoSys 나는 다음과 같은 오류 얻을 사용하여 응용 프로그램을 실행하는 경우 : 그래서에서 실행할 수있는 응용 프로그램이 예상 한 것을 서버에 로그인 AutoSys을 실행했을 때 동일한 사용자를 사용하고

The type initializer for 'IBM.WMQ.MQQueueManager' threw an exception. 

StackTrace = at IBM.WMQ.MQQueueManager..ctor(String queueManagerName, Hashtable properties) 
    at SendMessage.QueueJobExecutionItem.ExecuteQueueJob(QueueInfo queueInfo, CrmInfo crmInfo, LogFileInfo logFileInfo, List`1 entityList) in C:\SendMessage\QueueJobExecutionItem.cs:line 36 
    at SendMessage.Program.StartLoad() in C:\SendMessage\Program.cs:line 75 
    at SendMessage.Program.Main(String[] args) in C:\SendMessage\Program.cs:line 111 

Error Message InnerException = The type initializer for 'IBM.WMQ.MQQueueManager' threw an exception. 

InnerException StackTrace = at IBM.WMQ.MQQueueManager..ctor(String queueManagerName, Hashtable properties) 
    at SendMessage.QueueJobExecutionItem.ExecuteQueueJob(QueueInfo queueInfo, CrmInfo crmInfo, LogFileInfo logFileInfo, List`1 entityList) in C:\SendMessage\QueueJobExecutionItem.cs:line 36 
    at SendMessage.Program.StartLoad() in C:\SendMessage\Program.cs:line 75 
    at SendMessage.Program.Main(String[] args) in C:\SendMessage\Program.cs:line 111 

InnerException Source = amqmdnet 

Error Message InnerException = Exception has been thrown by the target of an invocation. 

InnerException StackTrace = at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 
    at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) 
    at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) 
    at System.Activator.CreateInstance(Type type, Boolean nonPublic) 
    at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture) 
    at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) 
    at IBM.WMQ.CommonServices.CreateCommonServices() 
    at IBM.WMQ.CommonServices.TraceConstructor(String objectId, String sccsid) 
    at IBM.WMQ.Nmqi.NmqiEnvironment..ctor(NmqiPropertyHandler nmqiPropertyHandler) 
    at IBM.WMQ.Nmqi.NmqiFactory.GetInstance(NmqiPropertyHandler properties) 
    at IBM.WMQ.MQQueueManager..cctor() 

InnerException Source = mscorlib 

Error Message InnerException = An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) 

InnerException StackTrace = at IBM.WMQ.MQCommonServices.xcsInitialize(UInt16 scope, UInt16 attributes, Byte[] charName, Byte[] charPrefix, xcsHPOOL& hPool) 
    at IBM.WMQ.MQCommonServices.Initialize() 

InnerException Source = amqmdxcs 

을 같은 방식으로.

이전에이 문제가 발생했는지 또는 서버에 로그인 할 때와 같은 방식으로 작동하도록 응용 프로그램을 만들 수있는 AutoSys에 누락 된 구성/매개 변수 등이 있는지 궁금합니다.

나는 예외가 An attempt was made to load a program with an incorrect format.를 보여주고 amqmdxcs.dll 가리키는이 메이크업 감각을 미리

+0

전체 예외 스택을 붙여 넣을 수 있습니까? – Shashi

+0

@Shashi : 전체 예외 스택을 추가했습니다. – Juancho

답변

1

에서

덕분에 희망이 될 수 중 응용 프로그램이 64 비트이지만 32 비트 버전을로드하려고하기 때문에 WMQ 라이브러리 또는 응용 프로그램은 32 비트이지만 WMQ 라이브러리의 64 비트 버전을로드하려고합니다. AutoSys의 비트를 확인하고 적절한 WMQ 라이브러리를로드 할 경로를 설정해야합니다.

+0

Thanks @ Shahi. 나는 Autosys에 대해 아주 익숙하다. 그래서 내가 어떻게 비트를 바꿀 수 있는지 알고 있니? – Juancho

+0

아니요. AutoSys에 대해 많이 알지 못합니다. – Shashi

+0

서버를 다시 시작하여 문제를 해결할 수있었습니다. WMQ를 설치 한 후 서버를 다시 시작하지 않은 것처럼 보입니다. – Juancho

관련 문제