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

StackOverflow https://stackoverflow.com/questions/1952370

  •  21-09-2019
  •  | 
  •  

Вопрос

На моем компьютере установлена Windows 7 ultimate (64-разрядная версия).Я установил MSMQ и проверил, что он работает нормально (выполнил несколько примеров кодов для MSMQ).

Когда я пытаюсь создать службу WCF с помощью класса MsmqIntegrationBinding, я получаю приведенное ниже исключение:

"При открытии очереди произошла ошибка: очередь не существует или у вас недостаточно прав для выполнения операции.(-1072824317, 0xc00e0003).Сообщение не может быть отправлено или получено из очереди.Убедитесь, что MSMQ установлен и запущен.Также убедитесь, что очередь доступна для открытия с требуемым режимом доступа и авторизацией ".

Я запускаю Visual Studio в режиме администратора и явно предоставляю разрешение самому себе через URL ACL, используя:netsh http добавить urlacl url=http://+:80/ пользователь=ДОМЕН\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();
        }
    }

Не могли бы вы, пожалуйста, помочь?

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top