2013-03-06 49 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

相關問題