Исключение при создании службы WCF с использованием MsmqIntegrationBinding

Моя машина - 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();
        }
    }

Можете ли вы помочь?

1 ответ

Решение

Убедитесь, что вы создали очередь "Заказы" в MSMQ.

В Windows Server 2008 вы можете сделать это из диспетчера сервера (щелкните правой кнопкой мыши на "Мой компьютер" и выберите "Управление"), затем выберите "Функции" -> "Очередь сообщений" -> "Частные очереди". Щелкните правой кнопкой мыши на Private Queues и добавьте туда свою очередь "Orders".

Вы также можете проверить статью Николаса Аллена: Диагностика общих ошибок очереди. Предполагается, что вашей ошибкой может быть только то, что "очередь не существует или, возможно, вы указали имя очереди неправильно". Во всех других случаях ошибки возникло бы другое исключение.

Другие вопросы по тегам