WCF в Windows Service PlatformNotSupportedException В Windows Server 2012 R2 - PullRequest
0 голосов
/ 28 ноября 2018

Я размещаю службу WCF в службе Windows.Он работает в нескольких версиях Windows, Windows 7, Windows 8, Windows 10, Windows Server 2016 ...

Однако в Windows Server 2012 R2 он не работает.

Когда я пытаюсь запустить службу, я получаю эту ошибку:

Service can not be started. System.PlatformNotSupportedException: This platform does not support operation.
   at System.Net.HttpListener..ctor()
   at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen()
   at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener)
   at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback)
   at System.ServiceModel.Channels.TransportChannelListener.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.HttpChannelListener`1.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channe...

Вот код службы:

using System;
using System.Configuration;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceProcess;

namespace WindowsService
{
    public partial class GerenciadorMorphoService : ServiceBase
    {
        private ServiceHost mHost = null;

        public GerenciadorMorphoService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            if (mHost != null)
            {
                mHost.Close();
            }

            Uri EndPoint = new Uri(ConfigurationManager.AppSettings["EndPointHttp"]);
            mHost = new ServiceHost(typeof(Terminais.Terminal), EndPoint);

            ServiceMetadataBehavior behave = new ServiceMetadataBehavior
            {
                HttpGetEnabled = true
            };

            mHost.Description.Behaviors.Add(behave);

            mHost.Open();
        }

        protected override void OnStop()
        {
            if (mHost != null)
            {
                mHost.Close();
                mHost = null;
            }
        }
    }
}

Адрес в ConfigurationManager.AppSettings [«EndPointHttp»] is http://localhost:46125/bioacesso/terminais.svc

Брандмауэр отключен, Нет приложения, использующего порт 46125 (проверено с помощью команды netstat) Я использую учетную запись администратора.

Я видел здесь несколько таких сообщений: WCF: PlatformNotSupportedException при запуске серверных проектов ,

однако любое предложенное решение сработало для моего случая,

Кто-нибудь знаетчто может происходить?

1 Ответ

0 голосов
/ 26 апреля 2019

Я нашел ответ по этой ссылке

http://www.toughdev.com/content/2017/12/fixing-platformnotsupportedexception-when-running-a-window-communication-foundation-application/

Драйвер http был отключен, и в Windows 2012 его можно изменить только в реестре.

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ HTTP

Ключ Start должен быть 3 (4 отключено)

...