2013-03-06 48 views

回答

3

你只能得到一个HTTP请求与范围内访问主机名称:

base.Request.Headers["Host"] 

这也是反向代理敏感。如果您在此之外需要它,我会在Web.config中添加一个用户定义的条目。

根据您的使用情况,你也可以从IHttpRequest访问虚拟和物理路径:

base.Request.PathInfo 
base.Request.ApplicationFilePath 

而且ServiceStack包括VirtualFileSystem,您可以使用访问:

EndpointHost.VirtualPathProvider 

你可以查询获取ServiceStack所在根目录的虚拟路径和物理路径:

EndpointHost.VirtualPathProvider.RootDirectory.VirtualPath 
EndpointHost.VirtualPathProvider.RootDirectory.RealPath 
+0

谢谢德米斯。我结束了使用EndpointHost.VirtualPathProvider。顺便说一句 - 使用ServiceStackHttpHandlerFactory.GetBaseUrl()来确定主机名是否可靠? – JBland 2013-03-06 11:42:55

+0

它不是100%,它首先查看'Config.WebHostUrl',如果没有设置,它会查找从第一个HTTP请求中填充的'ApplicationBaseUrl'。这对第一个请求是如何敏感的,例如,别名/虚拟主机/反向代理/等。我的建议是手动设置'Config.WebHostUrl'。 – mythz 2013-03-06 11:58:09

+0

我刚刚在我的配置文件中选择了一个设置。谢谢。 – JBland 2013-03-06 14:13:17

相关问题