1

我有一个添加了 ServiceStack Razor 的 ServiceStack 项目。每当我尝试导航到站点的根目录时,我都会被重定向到 /metadata。

这不会发生在我的开发机器上,只会发生在我的托管环境(AppHarbor)中。

我的项目的根目录中确实有一个 Default.cshtml。

导航到其他 URL 工作正常:/default1.cshtml,/myservicewithviews

我试过DefaultRedirectPath在我的 AppHost 中弄乱,但这没有帮助。

试图强制它会DefaultRedirectPath = "default.cshtml"导致重定向循环。这是有道理的。

这是什么原因造成的?

4

1 回答 1

2

AppHarbor 仅在构建项目时发布标记为“内容”的文件(AppHb 常见问题解答)。这个文件是唯一一个没有标记的内容,也是为什么我只在我的托管环境中遇到这个并且可以访问所有其他内容的原因。

未检测到默认文档会导致 ServiceStack 将 RedirectHttpHandler 设置为 /metadata -此处显示

另一个值得注意的点是,AppHarbor 的负载均衡器会在执行响应重定向等操作时导致其内部端口号显示在 ServiceStack URL 中。

要解决此问题,请将以下内容添加到 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 配置面板中配置此设置。

于 2013-01-21T07:34:08.127 回答