2012-03-15 16 views
0

私はキューにメッセージを書き込む必要のあるVB.NETコンソールアプリケーションを持っています(メインフレーム上にあります)。私たちはすべてのクラスタリングと管理者が設定しています。我々はすでに正常にメッセージを聞いて、さまざまなキューにメッセージを書き込む既存のWindowsサービスを既に持っています。.NETからMQにアクセスする際のエラー

私は基本的に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 
+0

'これらの値を記録し、システム管理者に伝えます –

答えて

0

ホスト名またはポート番号を再確認してください。ホスト名またはポート番号が有効でない場合、MQRC_HOST_NOT_AVAILABLEが返されます。

0

コードは、別のユーザーアカウントでアプリケーションを実行したときに機能しました。 MQ権限は、管理者アカウントとは異なる別のユーザーアカウント用に設定されています。

関連する問題