ServiceStack всегда перенаправляет по умолчанию на /metadata, даже если присутствует Default.cshtml

У меня есть проект ServiceStack с добавленным ServiceStack Razor. Каждый раз, когда я пытаюсь перейти в корень сайта, меня перенаправляют в /metadata.

Это не происходит на моей машине разработки, только в моей размещенной среде (AppHarbor).

У меня есть Default.cshtml в корне моего проекта.

Переход к другим URL-адресам работает нормально: /default1.cshtml, /myservicewithviews

Я пытался возиться с DefaultRedirectPath в моем AppHost, но это не помогло.

Попытка заставить его DefaultRedirectPath = "default.cshtml" привести к циклу перенаправления. Что имеет смысл.

Чем это вызвано?


person Tyst    schedule 19.01.2013    source источник


Ответы (1)


AppHarbor публикует только файлы с пометкой «Содержимое» при создании проектов (Часто задаваемые вопросы по AppHb). Этот файл был единственным не отмеченным содержимым, и поэтому я столкнулся с этим только в своей размещенной среде и мог получить доступ ко всему остальному содержимому.

Отсутствие документа по умолчанию приводит к тому, что ServiceStack устанавливает для RedirectHttpHandler значение /metadata — показано здесь

Еще один примечательный момент заключается в том, что балансировщик нагрузки AppHarbor заставляет их внутренние номера портов отображаться в URL-адресах ServiceStack при выполнении таких вещей, как перенаправления ответов.

Чтобы решить эту проблему, вы добавляете в свой Web.Config следующее:

<appSettings>
    <!-- AppHarbor Setting to stop AppHb load balancer internal port numbers from showing up in URLs-->
    <add key="aspnet:UseHostHeaderForRequestUrl" value="true" />
</appSettings>

Вы также можете настроить этот параметр на панели конфигурации AppHarbor.

person Tyst    schedule 21.01.2013