Ошибка доступа к MQ из .NET - PullRequest
0 голосов
/ 15 марта 2012

У меня есть консольное приложение VB.NET, которое должно записать сообщение в очередь (находится на мейнфрейме).У нас есть все кластеры и все настроено нашим администратором.У нас уже есть служба Windows, которая успешно прослушивает сообщения, а также записывает сообщения в различные очереди.

Я в основном повторно использовал большую часть своего кода из проекта службы Windows.

Но когдаЯ пытаюсь получить доступ к администратору очередей, я попал в исключение "MQRC_HOST_NOT_AVAILABLE".В журнале ошибок из папки Websphere MQ указано:

AMQ9213: A communications error for  occurred.
EXPLANATION:
An unexpected error occurred in communications.
ACTION:
The return code from the  call was 0 (X'0'). Record these values and tell the systems administrator. 

Вот полный стек исключений.

IBM.WMQ.MQException was unhandled
Message="MQRC_HOST_NOT_AVAILABLE"
Source="amqmdnet"
StackTrace:
   at IBM.WMQ.MQBase.throwNewMQException()
   at IBM.WMQ.MQQueueManager.Connect(String queueManagerName)
   at IBM.WMQ.MQQueueManager..ctor(String queueManagerName)
   at LPMQtoClarify.Module1.Main() in D:\LPDEV\Developers\X173036_Santhanam\LPMQtoClarify\LPMQtoClarify\Module2.vb:line 47
   at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

Вот часть моего кода.Исключение происходит в следующей строке

QueueManager = New MQQueueManager(TransParmRec.MQManager)

Любая помощь приветствуется.Спасибо.

Dim pos As Integer = 3
Dim clarifyReturnCode As Integer = 0
Dim clarifyRequestMessage As String = String.Empty

Dim QueueManager As MQQueueManager
clarifyQLauncherName = ConfigurationManager.AppSettings.[Get]("MQ_CLARIFY_REQUEST_Q")


Dim initRetCode As Integer = 0
Dim errorMessage As String = ""
initRetCode = GetTransInfo(TransParmRec, dbConnectionString, errorMessage)


MQEnvironment.Hostname = TransParmRec.MQHostName
MQEnvironment.Channel = TransParmRec.MQChannel

If TransParmRec.PortNumber.ToString().Length > 0 Then
    MQEnvironment.Port = Convert.ToInt32(TransParmRec.PortNumber)
End If
If TransParmRec.SecExit.ToString().Length > 0 Then
    MQEnvironment.SecurityExit = TransParmRec.SecExit
End If


QueueManager = New MQQueueManager(TransParmRec.MQManager)
Using sw As New StreamWriter("C:\FCLARIFYMQ.REQ", True)
    If QueueManager Is Nothing Then
        sw.WriteLine("Queue Manager is null")
    Else
        sw.WriteLine("Queue Manager is not null")

    End If
End Using

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Код работал, когда я запускал приложение под другой учетной записью пользователя.Привилегии MQ настраиваются для другой учетной записи пользователя, которая отличается от учетной записи администратора.

0 голосов
/ 16 марта 2012

Перепроверьте ваше имя хоста или номер порта.MQRC_HOST_NOT_AVAILABLE возвращается, если имя хоста или номер порта неверны.

...