本文整理汇总了C#中System.Messaging.MessageQueue.SetPermissions方法的典型用法代码示例。如果您正苦于以下问题:C# MessageQueue.SetPermissions方法的具体用法?C# MessageQueue.SetPermissions怎么用?C# MessageQueue.SetPermissions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Messaging.MessageQueue
的用法示例。
在下文中一共展示了MessageQueue.SetPermissions方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ProcessLocalQueue
void ProcessLocalQueue(DeploymentResult result)
{
Logging.Coarse("[msmq] Setting default permissions for on local queue '{0}'", _address.ActualUri);
try
{
var q = new MessageQueue(_address.LocalName);
q.SetPermissions(WellKnownSecurityRoles.Administrators, MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
result.AddGood("Successfully set permissions for '{0}' on queue '{1}'".FormatWith(WellKnownSecurityRoles.Administrators, _address.LocalName));
q.SetPermissions(WellKnownSecurityRoles.CurrentUser, MessageQueueAccessRights.FullControl, AccessControlEntryType.Revoke);
result.AddGood("Successfully set permissions for '{0}' on queue '{1}'".FormatWith(WellKnownSecurityRoles.Administrators, _address.LocalName));
q.SetPermissions(WellKnownSecurityRoles.Everyone, MessageQueueAccessRights.FullControl, AccessControlEntryType.Revoke);
result.AddGood("Successfully set permissions for '{0}' on queue '{1}'".FormatWith(WellKnownSecurityRoles.Administrators, _address.LocalName));
q.SetPermissions(WellKnownSecurityRoles.Anonymous, MessageQueueAccessRights.FullControl, AccessControlEntryType.Revoke);
result.AddGood("Successfully set permissions for '{0}' on queue '{1}'".FormatWith(WellKnownSecurityRoles.Administrators, _address.LocalName));
}
catch (MessageQueueException ex)
{
if (ex.Message.Contains("does not exist")) throw new DeploymentException("The queue '{0}' doesn't exist.", ex);
throw;
}
}
示例2: SetQueuePermissions
private static void SetQueuePermissions(MessageQueue queue)
{
var admins = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null).Translate(typeof(NTAccount)).ToString();
var everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null).Translate(typeof(NTAccount)).ToString();
var anonymous = new SecurityIdentifier(WellKnownSidType.AnonymousSid, null).Translate(typeof(NTAccount)).ToString();
queue.SetPermissions(admins, MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
queue.SetPermissions(everyone, MessageQueueAccessRights.GenericWrite, AccessControlEntryType.Allow);
queue.SetPermissions(anonymous, MessageQueueAccessRights.GenericWrite, AccessControlEntryType.Allow);
}
示例3: ProcessLocalQueue
void ProcessLocalQueue(DeploymentResult result)
{
Logging.Coarse("[msmq] Setting permissions for '{0}' on local queue '{1}'", _group, _address.ActualUri);
var q = new MessageQueue(_address.FormatName);
q.SetPermissions(_group, MessageQueueAccessRights.GetQueuePermissions, AccessControlEntryType.Allow);
q.SetPermissions(_group, MessageQueueAccessRights.GetQueueProperties, AccessControlEntryType.Allow);
q.SetPermissions(_group, MessageQueueAccessRights.WriteMessage, AccessControlEntryType.Allow);
result.AddGood("Successfully granted Write permissions to '{0}' for queue '{1}'".FormatWith(_group, _address.ActualUri));
}
示例4: Execute
public override DeploymentResult Execute()
{
var result = new DeploymentResult();
Logging.Coarse("[msmq] Setting permissions for '{0}' on local queue '{1}'", _group, _address.ActualUri);
var q = new MessageQueue(_address.FormatName);
q.SetPermissions(_group, MessageQueueAccessRights.GetQueueProperties, AccessControlEntryType.Allow);
q.SetPermissions(_group, MessageQueueAccessRights.GetQueuePermissions, AccessControlEntryType.Allow);
result.AddGood("Successfully granted Read permissions to '{0}' for queue '{1}'".FormatWith(_group, _address.ActualUri));
return result;
}
示例5: QueueProcessor
public QueueProcessor(string QueuePath)
{
//访问本地电脑上的消息队列时Path的格式可以有如下几种:
//MessageQueue mq = new MessageQueue();
//mq.Path = @".\Private$\test";
//mq.Path = @"sf00902395d34\Private$\test"; //sf00902395d34是主机名
//mq.Path = @"FormatName:DIRECT=OS:sf00902395d34\Private$\test";
//mq.Path = @"FormatName:DIRECT=OS:localhost\Private$\test";
//访问远程电脑上的消息队列时Path的格式
//mq.Path = @"FormatName:DIRECT=OS:server\Private$\test";
reset = new ManualResetEvent(true);
logger = LogManager.GetLogger("logger");
_path = QueuePath;
//判断指定的消息队列是否存在
if (MessageQueue.Exists(QueuePath))
{
queue = new MessageQueue(QueuePath);
logger.Info(string.Format("Init : {0} successfully!", QueuePath));
}
else
{
//不存在,创建
queue = MessageQueue.Create(QueuePath);
//赋予权限
queue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Set);
logger.Info(string.Format("Create message queue : {0} successfully!", QueuePath));
}
}
示例6: Execute
public override DeploymentResult Execute()
{
var result = new DeploymentResult();
Logging.Coarse("[msmq] Setting '{0}' access rights for '{1}' on local queue '{2}'", _accessRights, _user, _address.ActualUri);
var q = new MessageQueue(_address.FormatName);
q.SetPermissions(_user, _accessRights, AccessControlEntryType.Allow);
result.AddGood("Successfully granted '{0}' access rights to '{1}' for queue '{2}'".FormatWith(_accessRights, _user, _address.ActualUri));
return result;
}
示例7: SetPermissionsForQueue
static void SetPermissionsForQueue(MessageQueue queue, string account)
{
var allow = AccessControlEntryType.Allow;
queue.SetPermissions(AdminGroup, MessageQueueAccessRights.FullControl, allow);
queue.SetPermissions(EveryoneGroup, MessageQueueAccessRights.WriteMessage, allow);
queue.SetPermissions(AnonymousLogon, MessageQueueAccessRights.WriteMessage, allow);
queue.SetPermissions(account, MessageQueueAccessRights.WriteMessage, allow);
queue.SetPermissions(account, MessageQueueAccessRights.ReceiveMessage, allow);
queue.SetPermissions(account, MessageQueueAccessRights.PeekMessage, allow);
}
示例8: GrantPermissions
protected void GrantPermissions(MessageQueue queue, string user)
{
if (!string.IsNullOrEmpty(user))
{
queue.SetPermissions(user,
MessageQueueAccessRights.DeleteMessage |
MessageQueueAccessRights.DeleteJournalMessage |
MessageQueueAccessRights.GenericRead |
MessageQueueAccessRights.GenericWrite |
MessageQueueAccessRights.GetQueuePermissions |
MessageQueueAccessRights.PeekMessage |
MessageQueueAccessRights.ReceiveJournalMessage |
MessageQueueAccessRights.ReceiveMessage |
MessageQueueAccessRights.WriteMessage,
AccessControlEntryType.Allow);
}
}
示例9: ProcessStart
public void ProcessStart(string refNum)
{
try
{
while (ReadQueueSize(refNum) > 0)
{
if (MessageQueue.Exists(@".\Private$\ScrapeSessionsQueue"))
{
MQ = new System.Messaging.MessageQueue(@".\Private$\ScrapeSessionsQueue");
MQ.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
if (MQ != null)
{
Message processMessage = MQ.Receive(new TimeSpan(0, 0, 0, 0, 10));
processMessage.Formatter = new XmlMessageFormatter(new Type[] { typeof(ScrapeSession) });
ScrapeSession _scrapeSession = (ScrapeSession)processMessage.Body;
// Call the scraper
}
}
else
{
log.LogMessage(Enumeration.LoggingPriority.Low, refNum, "Create new Que");
MQ = MessageQueue.Create(@".\Private$\ScrapeSessionsQueue");
MQ.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
}
}
}
catch (MessageQueueException mqEx)
{
log.LogMessage(Enumeration.LoggingPriority.High, refNum, mqEx);
}
catch (Exception ex)
{
log.LogMessage(Enumeration.LoggingPriority.High, refNum, ex);
}
}
示例10: Listen
public override bool Listen(int numberOfSimultaneousRequests=1)
{
MessageQueue mqReceive = new MessageQueue(url);
MessageQueue.EnableConnectionCache = false;
// Control Queue permissions here:
mqReceive.SetPermissions("Everyone",
MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
Console.WriteLine(mqReceive.MulticastAddress);
mqReceive.Formatter = new XmlMessageFormatter(paramTypes);
//mqReceive.Formatter = new BinaryMessageFormatter();
//int numberOfSimultaneousRequests = 1;
try
{
for (int i = 0; i < numberOfSimultaneousRequests; i++) mqReceive.BeginReceive(TimeSpan.FromSeconds(5),
mqReceive, new AsyncCallback(OnMessageArrival));
running = true;
return true;
}
catch (Exception e)
{
return false;
}
}
示例11: AddQProcess
public void AddQProcess(string refNum)
{
try
{
if (MessageQueue.Exists(@".\Private$\ScrapeSessionsQueue"))
{
MQ = new System.Messaging.MessageQueue(@".\Private$\ScrapeSessionsQueue");
MQ.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
}
else
{
log.LogMessage(Enumeration.LoggingPriority.Low, refNum, "Creating MS message queue with name: " + @".\Private$\ScrapeSessionsQueue");
MQ = MessageQueue.Create(@".\Private$\ScrapeSessionsQueue");
MQ.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
}
ScrapeSession session = new ScrapeSession
{
AccountPassword = scrapeSession.AccountPassword,
AccountUsername = scrapeSession.AccountUsername,
ReferenceNumber = refNum,
Rules = scrapeSession.Rules,
ScrapeURL = scrapeSession.ScrapeURL
};
MQ.Send(session);
}
catch (MessageQueueException mqEx)
{
log.LogMessage(Enumeration.LoggingPriority.High, refNum, mqEx);
}
catch (Exception ex)
{
log.LogMessage(Enumeration.LoggingPriority.High, refNum, ex);
}
}
示例12: Execute
public void Execute(string user)
{
// will create the queues if they are not already there
messageLoggingModule.Init(transport, null);
var queuePath = MsmqUtil.GetQueuePath(new Endpoint
{
Uri = messageLoggingModule.LogQueue
}).QueuePath;
using (var queue = new MessageQueue(queuePath))
{
queue.SetPermissions(user,
MessageQueueAccessRights.DeleteMessage |
MessageQueueAccessRights.DeleteJournalMessage |
MessageQueueAccessRights.GenericRead |
MessageQueueAccessRights.GenericWrite |
MessageQueueAccessRights.GetQueuePermissions |
MessageQueueAccessRights.PeekMessage |
MessageQueueAccessRights.ReceiveJournalMessage |
MessageQueueAccessRights.ReceiveMessage |
MessageQueueAccessRights.WriteMessage,
AccessControlEntryType.Allow);
}
}
示例13: SetPermissionsForQueue
/// <summary>
/// Sets default permissions for queue.
/// </summary>
public static void SetPermissionsForQueue(MessageQueue q, string account)
{
try
{
q.SetPermissions(LocalAdministratorsGroupName, MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
q.SetPermissions(LocalEveryoneGroupName, MessageQueueAccessRights.WriteMessage, AccessControlEntryType.Allow);
q.SetPermissions(LocalAnonymousLogonName, MessageQueueAccessRights.WriteMessage, AccessControlEntryType.Allow);
q.SetPermissions(account, MessageQueueAccessRights.WriteMessage, AccessControlEntryType.Allow);
q.SetPermissions(account, MessageQueueAccessRights.ReceiveMessage, AccessControlEntryType.Allow);
q.SetPermissions(account, MessageQueueAccessRights.PeekMessage, AccessControlEntryType.Allow);
}
catch (Exception ex)
{
var message = String.Format("Access to MSMQ queue '{0}' is denied. Please set permission for this queue to be accessable for '{1}' account.", q.Path, account);
_logger.ErrorException(message, ex);
throw new Exception(message, ex);
}
}
示例14: SetPermissions
private void SetPermissions()
{
if (System.Messaging.MessageQueue.Exists(this.Path))
{
this.LogTaskMessage(string.Format(CultureInfo.CurrentCulture, "Setting permissions on queue: {0}", this.Path));
using (System.Messaging.MessageQueue queue = new System.Messaging.MessageQueue(this.Path))
{
if (this.Allow != null)
{
foreach (ITaskItem i in this.Allow)
{
MessageQueueAccessRights permission = (MessageQueueAccessRights)Enum.Parse(typeof(MessageQueueAccessRights), i.GetMetadata("Permissions"), true);
this.LogTaskMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, "Allow permission for user {0} - {1}", i.ItemSpec, i.GetMetadata("Permissions")));
queue.SetPermissions(i.ItemSpec, permission, AccessControlEntryType.Allow);
}
}
if (this.Deny != null)
{
foreach (ITaskItem i in this.Deny)
{
MessageQueueAccessRights permission = (MessageQueueAccessRights)Enum.Parse(typeof(MessageQueueAccessRights), i.GetMetadata("Permissions"), true);
this.LogTaskMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, "Deny permission for user {0} - {1}", i.ItemSpec, i.GetMetadata("Permissions")));
queue.SetPermissions(i.ItemSpec, permission, AccessControlEntryType.Deny);
}
}
if (this.Set != null)
{
foreach (ITaskItem i in this.Set)
{
MessageQueueAccessRights permission = (MessageQueueAccessRights)Enum.Parse(typeof(MessageQueueAccessRights), i.GetMetadata("Permissions"), true);
this.LogTaskMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, "Set permission for user {0} - {1}", i.ItemSpec, i.GetMetadata("Permissions")));
queue.SetPermissions(i.ItemSpec, permission, AccessControlEntryType.Set);
}
}
if (this.Revoke != null)
{
foreach (ITaskItem i in this.Revoke)
{
MessageQueueAccessRights permission = (MessageQueueAccessRights)Enum.Parse(typeof(MessageQueueAccessRights), i.GetMetadata("Permissions"), true);
this.LogTaskMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, "Revoke permission for user {0} - {1}", i.ItemSpec, i.GetMetadata("Permissions")));
queue.SetPermissions(i.ItemSpec, permission, AccessControlEntryType.Revoke);
}
}
}
}
else
{
this.Log.LogError(string.Format(CultureInfo.CurrentCulture, "Queue not found: {0}", this.Path));
}
}
示例15: setFullPermissions
private static void setFullPermissions(MessageQueue queue, WellKnownSidType wellKnownSidType)
{
var administratorsGroupName = new SecurityIdentifier(wellKnownSidType, null)
.Translate(typeof(NTAccount))
.ToString();
queue.SetPermissions(administratorsGroupName, MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow);
}