Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Windows Server 2008移动到2016后收到MSMQ错误_C#_Windows Server 2008_Msmq_Windows Server 2016 - Fatal编程技术网

C# 从Windows Server 2008移动到2016后收到MSMQ错误

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})测试排队函数时,抛出了以下错误 队列不存在,或者您没有足够的权限执行该操作 然后我对队列进行完全控制,尝试将一些数据排队,然

首先,我要说,我不是Windows堆栈专家,因此,如果我把这里的术语弄错了,我向您道歉

我们目前正在将我们的应用程序和相关资源从Windows Server 2008迁移到2016。在集群中,我们有一个MSMQ服务(以及一个本地实例),它有几十个队列供我们的应用程序使用

所有的东西都转移到这个新服务器上了。当我通过C#(使用路径./private$/{queuename})测试排队函数时,抛出了以下错误

队列不存在,或者您没有足够的权限执行该操作

然后我对队列进行完全控制,尝试将一些数据排队,然后再次收到此错误。因此,排除了权限问题

根据我们的服务器团队的说法,这在早期版本的Windows Server中有效,并且配置完全相同

现在连接的唯一方法是使用FormatName(FormatName:DIRECT=OS:{clusterName}.{domain}.net)。这破坏了应用程序的大部分,因为它需要本地路径(在对消息排队之前检查队列是否存在)

2016年是否有某种变化导致了这种新行为?如果是,是否有某种配置正在被检查?如果可能的话,我更愿意继续使用本地路径。如果不是这样,我们将不得不大修我们10年的应用程序


编辑:我还应该提到我所在的域与集群(pub.{domain}.net)不同。

那么,你确定队列存在吗?使用计算机管理、服务和应用程序、消息队列。看起来您使用的是私有队列,这很好,因为它们是最简单的队列。它们确实存在,我可以使用远程名称对数据进行排队,但不能使用本地路径。'/private$/{queuename}。我们能够使用该路径到达队列,然后它将与集群MSMQ通信。现在,随着服务器升级,该方法不再工作。它应该是“\private$\queuename”,而不是“/private$/queuename”。在集群的情况下,您应该使用集群网络名称,而不是“.”对不起,路径确实使用了“\”,这是我在这里输入的错误。我们的进程能够在移动之前转换“.”,从而连接到集群。直到2016年,MSMQ才抱怨没有使用群集网络名称。我们讨论了一个解决方案,我们将重新设计系统框架,以避免使用使用远程路径中断的MSMQ函数。那么,您确定队列存在吗?使用计算机管理、服务和应用程序、消息队列。看起来您使用的是私有队列,这很好,因为它们是最简单的队列。它们确实存在,我可以使用远程名称对数据进行排队,但不能使用本地路径。'/private$/{queuename}。我们能够使用该路径到达队列,然后它将与集群MSMQ通信。现在,随着服务器升级,该方法不再工作。它应该是“\private$\queuename”,而不是“/private$/queuename”。在集群的情况下,您应该使用集群网络名称,而不是“.”对不起,路径确实使用了“\”,这是我在这里输入的错误。我们的进程能够在移动之前转换“.”,从而连接到集群。直到2016年,MSMQ才抱怨没有使用群集网络名称。我们讨论了一个解决方案,我们将重新设计系统框架,以避免使用使用远程路径中断的MSMQ函数。