2

我有一个 FileSystemBlobProvider 需要将物理路径映射到虚拟路径,反之亦然。我还需要访问主机名(我需要在给定应用程序相对路径的情况下生成公共 url)。理想情况下,这应该独立于托管(Asp.Net 或自托管)。

任何指针都会有所帮助。

4

1 回答 1

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
于 2013-03-06T09:24:40.347 回答