我正在使用ServiceStack开发REST api,并且在默认重定向到元数据页面时遇到问题。我已将该服务发布到公共IIS7服务器上的虚拟文件夹“myservice”。
网址“http:// mydomain / myservice / whatever”按设计工作,“http:// mydomain / myservice / metadata”显示元数据页面(带有正确的链接网址)。
问题是,当访问“http:// mydomain / myservice”时,它会重定向到“http:// localhost / myservice / metadata”, 不是“http:// mydomain / myservice / metadata”。
如何配置元数据网址?
答案 0 :(得分:6)
在ServiceStack中,您可以通过在AppHost.Configure()
中指定所有重定向来指定要用于所有重定向的baseUrl:
SetConfig(new HostConfig {
WebHostUrl = "http://mydomain/",
});
您可以通过覆盖AppHost中的ResolveAbsoluteUrl()
覆盖ServiceStack如何解析Absolute Url,例如:
public class AppHost : AppHostBase
{
//...
public override string ResolveAbsoluteUrl(string virtualPath, IRequest req)
{
virtualPath = virtualPath.SanitizedVirtualPath();
return req.GetAbsoluteUrl(virtualPath);
}
}
答案 1 :(得分:1)
旧问题,但我也遇到了这个问题并找到了解决方案here。
基本上,如果您在某个地方并在同一台计算机上部署服务,则使用“http://localhost:XXXX/metadata”URL在浏览器中打开元数据页面,ServiceStack将记住这一点,直到服务重新启动并将继续重定向到此URL,无论您尝试打开此页面的位置。
因此,重新启动服务并使用其远程地址打开元数据页面,它应该没问题。