Почему я получаю сообщение об ошибке 503 – служба недоступна, когда служба доступна?

Согласно этому, ошибка 503: "503 Служба недоступна. Сервер в данный момент недоступен ( потому что он перегружен или отключен для обслуживания). Как правило, это временное состояние».

Но мне кажется, что это не так. У меня запущено серверное приложение веб-API, которое предоставляет метод REST. Я могу успешно вызвать его из Fiddler Composer (он получает файл и сохраняет его на диск), но ТОЛЬКО, если я использую «localhost» (IP-адрес не работает и имя хоста).

При попытке вызвать метод с моего портативного устройства Windows CE/Compact Framework (которое не может использовать «localhost», поскольку это было бы самовлюбленным и безрассудным), я могу получить либо ошибку 400 — неверный запрос с сервера, либо ошибку 503, в зависимости от того, использую ли я IP-адрес или имя хоста ПК, на котором работает приложение Web API.

С моим файлом applicationhost.config следующим образом:

<site name="HHS.Web" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\project\git\CStore\HHS.Web" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:21608:localhost" />
        <binding protocol="http" bindingInformation="*:21608:192.168.125.50" />
    </bindings>
</site>

... Я получаю сообщение об ошибке 400 - Bad Request, когда пытаюсь вызвать метод REST в HHS.WEB из портативного клиента, используя этот URL-адрес: http://192.168.125.50:21608/api/inventory/sendXML/duckbilled/platypus/bla

С файлом applicationhost.config следующим образом:

<site name="HHS.Web" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\project\git\CStore\HHS.Web" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:21608:localhost" />
        <binding protocol="http" bindingInformation="*:21608:shannon2" />
    </bindings>
</site>

...и этот uri, используя мое имя хоста: http://shannon2:21608/api/inventory/sendXML/duckbilled/platypus/bla

... Я получаю ошибку "503". Сервер работает, что можно увидеть, когда я изменяю запись в applicationhost.config и URL-адрес, который я вызываю; так почему он говорит мне, что он недоступен?

ОБНОВИТЬ

Я надеялся, что у меня был мозговой штурм, и что использование «PPP_PEER» для обозначения ПК поможет, и поэтому я изменил URL-адрес, который вызывает приложение на портативном устройстве, с этого:

http://192.168.125.50:21608/api/inventory/sendXML/duckbilled/platypus/bla

...к этому:

http://PPP_PEER:21608/api/inventory/sendXML/duckbilled/platypus/bla

... поскольку кажется, что КПК должен ссылаться на ПК, но это просто возвращает меня к ошибке «400 - Bad Request» (и точка останова в серверном приложении все еще не сработала). Если использование «PPP_PEER» — правильная идея, что еще мне нужно, чтобы заставить его работать?

ОБНОВЛЕНИЕ 2

Суть бисквита заключалась в добавлении в командную строку либо этого:

netsh http add urlacl url=http://shannon2:80/ user=everyone

...или это:

netsh http add urlacl url=http://shannon2:8080/ user=everyone

Подробнее об обновлении 5 см. здесь.


person B. Clay Shannon    schedule 11.09.2014    source источник