У меня есть следующий код в веб-методе приложения веб-службы .NET 2.0 VB:
<WebMethod()> _
Public Function UpdateCall(<System.Xml.Serialization.XmlElement("CallChangeRequest")> ByVal callChange As CallChangeMessage) As Boolean
Dim result As Boolean = False
Dim mq As System.Messaging.MessageQueue = Nothing
Dim msg As System.Messaging.Message = Nothing
Try
mq = New System.Messaging.MessageQueue(System.Configuration.ConfigurationManager.AppSettings("queueName"))
mq.Formatter = New System.Messaging.XmlMessageFormatter(New Type() {GetType(CallChangeMessage)})
msg = New System.Messaging.Message(callChange)
msg.Recoverable = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings("recoverableMessages"))
mq.Send(msg)
result = True
Catch ex As Exception
Finally
If Not (msg Is Nothing) Then msg.Dispose()
If Not (mq Is Nothing) Then mq.Dispose()
End Try
Return result
End Function
Этот код корректно сериализует мой объект и записывает сообщение XML в очередь сообщений в моем старом локальномМашина для разработки под управлением Windows XP Pro 32-bit.Он также работает правильно на производственном сервере.После обновления до Windows 7 64-bit этот код больше не будет записывать сообщение XML в очередь сообщений.Вызов msg.Send (msg) не вызывает исключения, поэтому мой веб-метод возвращает true для вызывающей стороны.Однако сообщение не записывается в очередь, поэтому код просто тихо завершается с ошибкой.
Сообщения помечаются как восстанавливаемые, а имя очереди FormatName: DIRECT = OS:. \ Private $ \inbounddata .Я открыл разрешения для практически всех, чтобы сделать все.Если бы была проблема с разрешением, я бы ожидал получить какое-то исключение, поэтому я не думаю, что у меня есть проблема с разрешением.Веб-служба работает в пуле приложений, ориентированном на платформу 2.0 с режимом управляемого конвейера, установленным на Классический.
До сих пор я использовал для развертывания кода на моем старом блоке разработки, который до сих пор виситвокруг, но я не могу делать это вечно.Есть ли проблема с моим кодом, которая приводит к сбою?Кто-нибудь знает какие-либо проблемы с записью в MSMQ в 64-битной Windows 7 из 32-битного приложения .NET 2.0 Framework?
Спасибо за любую помощь!