Windows

無法讓 MSMQ 通過 HTTP 通過 FQDN 接收消息

  • March 10, 2014

上下文 - 帶有私有隊列的 Server 2008 R2,IIS 設置。通過 HTTP 從其他電腦發送消息。

$$ MSMQ is not in the ‘default web site’. I changed the ID of my website to 1 to install msmq (after previously un installing it) $$ 我可以做一些幫助。我已經通讀了所有“通過 http 的 msmq 消息只是沒有得到傳遞”並對此進行了很多研究,但就是無法使其正常工作。

如果我使用 IP 地址,我可以讓隊列接收消息,而不是如果我使用解析為相同 IP 地址的 FQDN。我需要域名才能工作,因為我的下一步是讓 SSL 工作,如果是完整的域名,顯然我的證書!

我有一個非常簡單的應用程序,它發送以下消息:

Private Function SendStuff() As String

   Dim output As String = "Mesages Sent To" & Environment.NewLine

   Dim Addresses As New List(Of String)
   Addresses.Add("Direct=HTTP://46.0.0.206/msmq/Private$/test.q")
   Addresses.Add("Direct=HTTPS://46.0.0.206/msmq/Private$/test.q")
   Addresses.Add("Direct=HTTP://subdomain.domain.net/msmq/Private$/test.q")
   Addresses.Add("Direct=HTTPS://subdomain.domain.net/msmq/Private$/test.q")

   For Each address In Addresses

       Dim fullAddress As String = "FormatName:" & address

       Dim mq As New System.Messaging.MessageQueue(fullAddress)
       Dim mm As New System.Messaging.Message()


       Dim body As String = "Hello via constructor " & fullAddress

       With mm
           .Body = body
           .AcknowledgeType = Messaging.AcknowledgeTypes.None
           .UseAuthentication = False
           .TimeToReachQueue = New TimeSpan(0, 20, 0)
           .Label = address.Substring(7, 14)
       End With

       mq.Send(mm)
       output = output & Environment.NewLine & fullAddress
   Next
   Return output
End Function

在伺服器上,在 IIS 日誌中,我們得到了這樣的資訊:

2014-03-07 09:04:02 46.0.0.206 POST /msmq/private$/test.q - 80 - 83.0.0.130 - 200 0 0 31 
2014-03-07 09:04:02 46.0.0.206 POST /msmq/private$/test.q - 443 - 83.0.0.130 - 200 0 0 46
2014-03-07 09:04:02 46.0.0.206 POST /msmq/private$/test.q - 80 - 83.0.0.130 - 200 0 0 78

我在 test.q 中收到 1 條消息,我期望 2 條(都來自 HTTP 協議,我還沒有期望的 httpS,但會很好:)

收到的消息:

   <?xml version="1.0"?>
<string>Hello via constructor FormatName:Direct=HTTP://46.0.0.206/msmq/Private$/test.q</string>

任何人都可以告訴我接下來要看什麼嗎,伺服器/接收電腦事件日誌中沒有任何有趣的東西,儘管我打開了“端到端”,但我在“應用程序和服務日誌\Microsoft\Windows\MSMQ”中什麼也沒得到’ 裡面有 0 條消息。

任何幫助表示讚賞。

謝謝

好的,所以解決方案很簡單。

似乎很清楚所有文件都是在 HTTP 選項之前製作的,因此僅缺少一個範例。

您需要為 MSMQ 添加從 FQDN.com 到 localhost 的重定向。

為此,您可以在以下位置添加一個 XML 文件:C:\Windows\System32\msmq\Mapping

具有以下內容:

<redirections xmlns="msmq-queue-redirections.xml">
 <redirection>
     <from>http://FQDN.com/msmq/private$/test.q</from>
     <to>http://localhost/msmq/private$/test.q</to> 
 </redirection>
</redirections>

完畢

引用自:https://serverfault.com/questions/580522