Проблема записи в личную очередь сообщений в 64-разрядной версии Windows 7 из веб-службы .NET 2.0 - PullRequest
0 голосов
/ 08 июня 2011

У меня есть следующий код в веб-методе приложения веб-службы .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?

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 08 июня 2011

Не знаю, что случилось, но я удалил существующую очередь, создал новую очередь, и теперь все хорошо.Спасибо за предложения.

...