Служба WCF недоступна после перезапуска пула приложений

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

[WebException: The remote server returned an error: (503) Server Unavailable.]
   System.Net.HttpWebRequest.GetResponse() +6440728
   System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +55

[ServerTooBusyException: The HTTP service located at http://cr.genesis.dev/Genesis/RepositoryService.svc is unavailable.  This could be because the service is too busy or because no endpoint was found listening at the specified address. Please ensure that the address is correct and try accessing the service again later.]
...

Когда я пытаюсь получить доступ к сервису непосредственно в своем веб-браузере, он выдает мне 503 в первый раз, но затем он работает после этого (предположительно, это вызывает запуск приложения?). Мне интересно, почему веб-сайт не просыпается веб-сервис - даже если я пытаюсь загрузить страницу несколько раз, я все равно получаю 503...

Я использую интеграцию Windsor WCF, если это имеет значение, используя LifestylePerWebRequest для моего клиента и LifestylePerThread для моей службы.

Это моя конфигурация для службы:

<system.serviceModel>
        <services>
            <service name="Genesis.Repository.Service.RepositoryService" behaviorConfiguration="repositoryServiceBehaviour">
                <host>
                    <baseAddresses>
                        <add baseAddress="http://cr.genesis.dev/Genesis/" />
                    </baseAddresses>
                </host>
                <endpoint name="basicHttpBinding"
                    address="RepositoryService.svc"
                    binding="basicHttpBinding"
                    contract="Genesis.Repository.Service.IRepositoryService" />
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="repositoryServiceBehaviour">
                    <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                    <serviceMetadata httpGetEnabled="true" />
                    <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                    <serviceDebug includeExceptionDetailInFaults="false"/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
    </system.serviceModel>

И клиент:

<system.serviceModel>
        <client>
            <endpoint name="basicHttpBinding"
                 address="http://cr.genesis.dev/Genesis/RepositoryService.svc"
                 binding="basicHttpBinding"
                 contract="Genesis.Repository.Service.IRepositoryService" />
        </client>
    </system.serviceModel>

Мы ценим любые предложения!


person Community    schedule 09.09.2012    source источник


Ответы (2)


Похоже, я усложнял задачу больше, чем нужно — я получал исключения, говорящие, что он не может прослушивать http://+:80, поэтому я поэкспериментировал с разрешениями netsh и заставил его прослушивать /Genesis.

Оказывается, я могу просто заставить его слушать / и указать .Hosted() при регистрации его в Windsor, чтобы он разрешил IIS разместить его (именно так это было до того, как я установил WcfFacility!)

Урок усвоен, иногда вам просто нужно вернуться к основам, и все будет работать так, как задумано!

person Community    schedule 10.09.2012

Если вы обнаружили ошибку «(503) Сервер недоступен», то в первую очередь проверьте, работает сервер или нет. Для этого перейдите в IIS и проверьте, включен или выключен веб-сайт.

person Gaurav Satpute    schedule 13.06.2019
comment
Автор заявил, что он дает мне 503 в первый раз, но затем он работает после этого, поэтому сайт определенно запускается ... Повторная попытка может быть самым простым решением. - person Miklós Tóth; 13.06.2019