MSMQ 跨服务器读写队列的“消息队列系统的访问被拒绝”的解决方案
转自https://www.cnblogs.com/jyz/articles/4612333.html
最近项目中需要跨服务器对消息队列进行读写,开始在单独开发机器上进行Queue的读写没问题。但是部署后,在服务器上创建的Queue开发者的 机器只能写数据而不能读数据。.net给出的错误是“对消息队列系统的访问被拒绝”,也就是说拒绝访问队列没有相关权限,我给Everyone和 ANONYMOUS LOGON赋予全部权限都无法解决(正常情况下可以解决此问题)。经过多次google和尝试现将解决办法汇总如下:
一. 服务部署情况说明
1. 在window 2008r2开发服务器上安装并创建消息队列
2. 在window 7开发者机器上向开发服务的消息队列读写数据
二. 问题解决办法
1. 服务器端
- 服务器上消息队列权限设置:给ANONYMOUS LOGON赋予所有权限;
- 修改服务器的注册表,允许非验证客户端访问
- 注册表新增HKLM\Software\Microsoft\MSMQ\Parameters\security\AllowNonauthenticatedRpc项,设置其DWORD值为1
- 注册表新增HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerDenyWorkgroupClient项,设置其DWORD值为1
MSMQ的安全访问控制说明参见:http://msdn.microsoft.com/en-us/library/4108f68e-80f5-40e1-b3df-b713cc4dff79(prot.20).aspx
2. 开发 端
设置消息队列路径为:
队列示例代码如下:
public static class MsmqQueue
{
private static MessageQueue queue = null;
static MsmqQueue()
{
queue = new MessageQueue(@"Formatname:DIRECT=tcp:192.168.1.200\private$\OrgMngUserOprtLog");
} public static void SendMessage(DTO message)
{
Message msg = new Message
{
Body = message,
Formatter = new XmlMessageFormatter(new Type[] { typeof(DTO) })
}; queue.Send(msg);
} public static void ReceiveMessage()
{
queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(DTO) });
Message msg = queue.Receive();
var ret = msg.Body as DTO;
} public static void Close()
{
queue.Close();
queue.Dispose();
}
}
MSMQ 跨服务器读写队列的“消息队列系统的访问被拒绝”的解决方案的更多相关文章
- (二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念
原文:(二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念 没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. Rabbit ...
- 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?
面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka.ActiveMQ.RabbitMQ.RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析 其实面试官主要是想看看: ...
- 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?
https://blog.csdn.net/Iperishing/article/details/86674084
- MSMQ消息队列,包括远程访问
之前的项目用到了队列,现在总结一下,下面有非常详细的DEMO,希望能对有需要的人提供帮助. 使用场景:在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了 ...
- 详解.Net消息队列(MSMQ)应用
[IT168 技术文档]MSMQ是Windows 2000.Windows XP.Windows Server 2003的一个组件,并将继续包含在Windows Vista和以后的Windows服务器 ...
- 跟我一起学WCF(1)——MSMQ消息队列
一.引言 Windows Communication Foundation(WCF)是Microsoft为构建面向服务的应用程序而提供的统一编程模型,该服务模型提供了支持松散耦合和版本管理的序列化功能 ...
- .net微软消息队列(msmq)简单案例
1.首先我们需要安装消息队列服务,它是独立的消息记录的服务,并保存在硬盘文件中. 我们添加名为:DMImgUpload的私有消息队列. 2.定义消息队列的连接字符串建议采用IP: (1)FormatN ...
- C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)
前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...
- rabbit服务器挂掉以后,保证队列消息还存在(tp框架)(第三篇)
上接 第二篇 : http://www.cnblogs.com/spicy/p/7921870.html 第二篇解决了 如果其中一个worker挂掉了啦,如何保证消息不丢掉,并重新分发给其他worke ...
随机推荐
- FFmpeg中subtitle demuxer实现
[时间:2019-01] [状态:Open] [关键词:字幕,ffmpeg,subtitle,demuxer,源码] 0 引言 本文重心在于FFmpeg中subtitle demuxer的实现逻辑. ...
- 【Java】类加载过程
JVM把class文件加载到内存,并对数据进行校验.解析和初始化,最终形成JVM可以直接使用的Java类型的过程. 类加载的过程主要分为三个部分: 加载 链接 初始化 而链接又可以细分为三个小部分: ...
- .NET Core Session的使用方法
刚使用.NET Core会不习惯,比如如何使用Session:不仅需要引用相应的类库,还需要在Startup.cs里进行注册. 1.在你的项目上基于NuGet添加: install-package M ...
- JavaScript学习历程01
水仙花数 ps:各位数字立方和等于该数本身 方法1 (数组) <script type="text/javascript"> var i = 100; var newi ...
- 使用for of循环遍历获取的nodeList,配置babel编译,webpack打包之后在iphone5下报错
报错信息: Symbol.iterator is not a function [duplicate] 代码示例: function insertCta() { let ctaArr = Array. ...
- Jquery EasyUI Combotree根据选中的值展开所有父节点
Jquery EasyUI Combotree根据选中的值展开所有父节点 Jquery EasyUI Combotree 展开父节点, Jquery EasyUI Combotree根据子节点选中的 ...
- python使用requests发送application/x-www-form-urlencoded请求数据
def client_post_formurlencodeddata_requests(request_url,requestJSONdata): #功能说明:发送以form表单数据格式(它要求数据名 ...
- monit官方摘录
Here are the legal global keywords: Keyword Function ----------------------------------------------- ...
- Sublime Text 插件之HTML-CSS-JS Prettify—格式化HTML CSS JS与显示函数列表
插件名称:HTML-CSS-JS Prettify 安装步骤: 1.ctrl + shift + p 打开控制台2.输入install package,选择install package(如果已经安装 ...
- 关于mysql中触发器old和new
1.当使用insert语句的时候,如果原表中没有数据的话,那么对于插入数据后表来说新插入的那条数据就是new,如图所示: 2.当使用delete语句的时候,删除的那一条数据相对于删除数据后表的数据来说 ...