Моя машина - Windows 7 Ultimate (64 бит). Я установил MSMQ и проверил, что он работает нормально (запустил несколько примеров кодов для MSMQ).
Когда я пытаюсь создать Службу WCF с использованием класса MsmqIntegrationBinding, я получаю следующее исключение:
"Произошла ошибка при открытии очереди: очередь не существует или у вас недостаточно прав для выполнения операции. (-1072824317, 0xc00e0003). Сообщение не может быть отправлено или получено из очереди. Убедитесь, что MSMQ установлен и работает. Также убедитесь, что очередь доступна для открытия с требуемым режимом доступа и авторизацией. "
Я работаю в Visual Studio в режиме администратора и явно предоставляю разрешение для себя через ACL URL-адреса, используя:
netsh http add urlacl url = http://+:80/ user = DOMAIN \ user
Ниже приведен код:
public static void Main()
{
Uri baseAddress = new Uri(@"msmq.formatname:DIRECT=OS:AJITDELL2\private$\Orders");
using (ServiceHost serviceHost = new ServiceHost(typeof(OrderProcessorService), baseAddress))
{
MsmqIntegrationBinding serviceBinding = new MsmqIntegrationBinding();
serviceBinding.Security.Transport.MsmqAuthenticationMode = MsmqAuthenticationMode.None;
serviceBinding.Security.Transport.MsmqProtectionLevel = System.Net.Security.ProtectionLevel.None;
//serviceBinding.SerializationFormat = MsmqMessageSerializationFormat.Binary;
serviceHost.AddServiceEndpoint(typeof(IOrderProcessor), serviceBinding, baseAddress);
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("The service is running in the following account: {0}", WindowsIdentity.GetCurrent().Name);
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
}
}
Не могли бы вы помочь?