我有一个 FileSystemBlobProvider 需要将物理路径映射到虚拟路径,反之亦然。我还需要访问主机名(我需要在给定应用程序相对路径的情况下生成公共(public) url)。理想情况下,这应该独立于托管(Asp.Net 或自托管)。
任何指示都会有帮助。
最佳答案
您只能通过以下方式访问 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
关于servicestack - 获取独立于托管的 ServiceStack 应用程序的应用程序物理和虚拟根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15238341/