C# 从Windows Server 2008移动到2016后收到MSMQ错误
首先,我要说,我不是Windows堆栈专家,因此,如果我把这里的术语弄错了,我向您道歉 我们目前正在将我们的应用程序和相关资源从Windows Server 2008迁移到2016。在集群中,我们有一个MSMQ服务(以及一个本地实例),它有几十个队列供我们的应用程序使用 所有的东西都转移到这个新服务器上了。当我通过C#(使用路径./private$/{queuename})测试排队函数时,抛出了以下错误 队列不存在,或者您没有足够的权限执行该操作 然后我对队列进行完全控制,尝试将一些数据排队,然后再次收到此错误。因此,排除了权限问题 根据我们的服务器团队的说法,这在早期版本的Windows Server中有效,并且配置完全相同 现在连接的唯一方法是使用FormatName(FormatName:DIRECT=OS:{clusterName}.{domain}.net)。这破坏了应用程序的大部分,因为它需要本地路径(在对消息排队之前检查队列是否存在) 2016年是否有某种变化导致了这种新行为?如果是,是否有某种配置正在被检查?如果可能的话,我更愿意继续使用本地路径。如果不是这样,我们将不得不大修我们10年的应用程序C# 从Windows Server 2008移动到2016后收到MSMQ错误,c#,windows-server-2008,msmq,windows-server-2016,C#,Windows Server 2008,Msmq,Windows Server 2016,首先,我要说,我不是Windows堆栈专家,因此,如果我把这里的术语弄错了,我向您道歉 我们目前正在将我们的应用程序和相关资源从Windows Server 2008迁移到2016。在集群中,我们有一个MSMQ服务(以及一个本地实例),它有几十个队列供我们的应用程序使用 所有的东西都转移到这个新服务器上了。当我通过C#(使用路径./private$/{queuename})测试排队函数时,抛出了以下错误 队列不存在,或者您没有足够的权限执行该操作 然后我对队列进行完全控制,尝试将一些数据排队,然
编辑:我还应该提到我所在的域与集群(pub.{domain}.net)不同。那么,你确定队列存在吗?使用计算机管理、服务和应用程序、消息队列。看起来您使用的是私有队列,这很好,因为它们是最简单的队列。它们确实存在,我可以使用远程名称对数据进行排队,但不能使用本地路径。'/private$/{queuename}。我们能够使用该路径到达队列,然后它将与集群MSMQ通信。现在,随着服务器升级,该方法不再工作。它应该是“\private$\queuename”,而不是“/private$/queuename”。在集群的情况下,您应该使用集群网络名称,而不是“.”对不起,路径确实使用了“\”,这是我在这里输入的错误。我们的进程能够在移动之前转换“.”,从而连接到集群。直到2016年,MSMQ才抱怨没有使用群集网络名称。我们讨论了一个解决方案,我们将重新设计系统框架,以避免使用使用远程路径中断的MSMQ函数。那么,您确定队列存在吗?使用计算机管理、服务和应用程序、消息队列。看起来您使用的是私有队列,这很好,因为它们是最简单的队列。它们确实存在,我可以使用远程名称对数据进行排队,但不能使用本地路径。'/private$/{queuename}。我们能够使用该路径到达队列,然后它将与集群MSMQ通信。现在,随着服务器升级,该方法不再工作。它应该是“\private$\queuename”,而不是“/private$/queuename”。在集群的情况下,您应该使用集群网络名称,而不是“.”对不起,路径确实使用了“\”,这是我在这里输入的错误。我们的进程能够在移动之前转换“.”,从而连接到集群。直到2016年,MSMQ才抱怨没有使用群集网络名称。我们讨论了一个解决方案,我们将重新设计系统框架,以避免使用使用远程路径中断的MSMQ函数。