Asp.net 从.NET 2.0 Web服务写入Windows 7 64位上的专用消息队列时出现问题

Asp.net 从.NET 2.0 Web服务写入Windows 7 64位上的专用消息队列时出现问题,asp.net,web-services,asmx,msmq,Asp.net,Web Services,Asmx,Msmq,我在.NET 2.0 VB web服务应用程序的web方法中有以下代码: <WebMethod()> _ Public Function UpdateCall(<System.Xml.Serialization.XmlElement("CallChangeRequest")> ByVal callChange As CallChangeMessage) As Boolean Dim result As Boolean = False Dim mq As System.M

我在.NET 2.0 VB web服务应用程序的web方法中有以下代码:

<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
_
作为布尔值的公共函数UpdateCall(ByVal callChange作为CallChangeMessage)
将结果设置为布尔值=False
Dim mq As System.Messaging.MessageQueue=无
Dim msg As System.Message.Message=无
尝试
mq=New System.Messaging.MessageQueue(System.Configuration.ConfigurationManager.AppSettings(“queueName”))
mq.Formatter=New System.Messaging.XmlMessageFormatter(新类型(){GetType(CallChangeMessage)})
msg=New System.Messaging.Message(调用更改)
msg.Recoverable=Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings(“recoverableMessages”))
mq.Send(msg)
结果=真
特例
最后
如果不是(msg什么都不是),那么msg.Dispose()
如果不是(mq什么都不是),那么mq.Dispose()
结束尝试
返回结果
端函数
这段代码正确地序列化了我的对象,并将XML消息写入我的旧本地开发机器上的消息队列,该机器运行的是Windows XP Pro 32位。它还可以在生产服务器上正确执行。升级到64位Windows 7后,此代码将不再在消息队列中写入XML消息。调用msg.Send(msg)不会引发异常,因此我的web方法会向调用者返回true。但是,没有消息写入队列,因此代码只是悄悄地失败了

消息标记为可恢复,队列名称为FormatName:DIRECT=OS:。\private$\inbounddata。我已经为每个人打开了做任何事情的权限。如果有权限问题,我希望得到某种例外,所以我认为我没有权限问题。web服务正在一个应用程序池中运行,该应用程序池的目标是2.0框架,托管管道模式设置为Classic

到目前为止,我的办法是在我的旧开发箱上部署代码,我仍然在使用它,但我不能永远这样做。我的代码是否存在导致此失败的问题?有人知道从32位.NET 2.0 framework应用程序在64位Windows 7上写入MSMQ时有任何问题吗


谢谢你的帮助

不知道发生了什么,但我删除了现有队列,创建了一个新队列,现在一切都好了。谢谢你的建议。

问题可能是IPv6问题而不是操作系统问题吗?@Mutt,我该如何诊断?我的计算机似乎同时具有IPv4和IPv6。如果我禁用IPv6,我会给自己带来不必要的悲伤吗?我相信我们的网络正在使用所有IPv4地址。我检查了事件日志,MSMQ在侦听IPv4或IPv6地址时没有出现任何错误。另外,我在队列FormatName中没有使用IP地址,所以我认为这不是我的问题。这很奇怪。如果有备份,您可以将\msmq\storage\lqs文件夹中的配置文件与队列的损坏版本和工作版本进行比较,以查看UI中是否存在不明显的配置差异。