09. juli 2010 - 16:26Der er
8 kommentarer og 1 løsning
Problem med at skrive i en MSMQ på LAN fra en DMZ server
Jeg har en Webservice skal sende en string til en MSMQ. Hvis jeg bruge stien myLANserver\private$\request. Jeg har fint forbindelse med en MSMQ hvis jeg laver den på DMZ serveren med webservice på. altså myDMZserver\private$\request
Det er jo nok noget med nogle rettigheder. Der er opsat regler i firewall som giver adgang mellem serverne.
Jeg benytter følgende kode
if (MessageQueue.Exists(requestPath)) requestQueue = new MessageQueue(requestPath); else requestQueue = MessageQueue.Create(requestPath);
Jeg har også prøvet med men det giver samme fejl. Direct:OS=myLANserver\private$\request FormatName:Direct:OS=myLANserver\private$\request (Fejlen er lidt anderledes her, Cannot determine whether a queue with the specified format name exists)
Opsætning af serverne er ikke mig selv der har gjort det.(Har ikke evnerne). Da LAN serveren findes bag firewall'en og DMZ serveren findes foran, er der opsat exceptions mellem disse to servere i firewall'en. Der en exception for MSMQ
myLANserver er også indsat i host filen på DMZserveren
at System.Messaging.MessageQueue.MQCacheableInfo.get_WriteHandle() at System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS properties, IntPtr transaction) at System.Messaging.MessageQueue.SendInternal(Object obj, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType) at System.Messaging.MessageQueue.Send(Object obj) at NavisionIntegration.MSMQ.Send(String query) in C:\Inetpub\NavisionIntegrationServicePublic\MSMQ.cs:line 99 at NavisionIntegration.NavisionIntegrationService.InvoikeNavisionNoResponse(String parameterRequest) in C:\Inetpub\NavisionIntegrationServicePublic\NavisionIntegrationService.asmx.cs:line 139
if (MessageQueue.Exists(@"FormatName:Direct:OS=LANServer\private$\navisionrequest"))
at System.Messaging.MessageQueue.Exists(String path) at NavisionIntegration.MSMQ..ctor() in C:\Inetpub\NavisionIntegrationServicePublic\MSMQ.cs:line 60 at NavisionIntegration.NavisionIntegrationService.InvoikeNavisionNoResponse(String parameterRequest) in C:\Inetpub\NavisionIntegrationServicePublic\NavisionIntegrationService.asmx.cs:line 138
he he. JEg har selv fundet løsningen.......Der var to ting. Den ene var en total fejl 40. FormatName:Direct:OS=LANServer\private$\navisionrequest" det skal være FormatName:Direct=OS:LANServer\private$\navisionrequest" Jeg har dog på det et tidspunkt brugt en rigtige.
Men den anden er at man ikke kan bruge funktionen Exists på en queue som ikke findes lokal.
Arne V. Hvis du vil have point for din deltagelse læg et svar.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.