我有一个FileSystemBlobProvider需要将物理路径映射到虚拟路径,反之亦然。我还需要访问主机名(我需要在给定app相对路径的情况下生成公共URL)。理想情况下,这应该独立于托管(Asp.Net或自托管)。
任何指针都会有所帮助。
答案 0 :(得分: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