2015-03-13 23 views
1

MyRoute類由IRouteProvider創建。我需要根據一些設置來管理路線。此設置存儲在單獨的表中,我有兩個選項來獲取它們。如何從派生自RouteBase類的類獲取站點設置

首先。從網站內容workContext.CurrentSite.As<MySettings>()獲取設置,使用IRepository獲取它們 但是在RouteBase.GetRouteData方法中_workContextAccessor.GetContext()總是返回null

其次。直接從我的服務_myService.GetList()使用IRepository,讓他們獲取設置 但IRepository<T>.Table財產有時給出了一個錯誤連接MSSQL不設置與本站停止工作

+0

首先,你能解釋爲什麼你認爲你的路線需要依賴於一個設置嗎? – 2015-03-13 23:12:16

+0

我正在開發多語言網站,其中不同版本有不同的域名。我正在使用Orchard.Localization模塊。我需要的頁面顯示在相同的別名,但不同的域名。例如,別名在Orchard_Alias_AliasRecord中以「en-us/my-page」的形式存儲,並且我在en.domain.ru/my-page上顯示此頁面(對於主頁別名爲「en-us」)。語言版本,域名,顯示文化名稱,網址前綴都是我的設置。 – 2015-03-15 11:57:13

+1

看起來你需要的邏輯是一個控制器,而不是路由。 – 2015-03-16 03:32:59

回答

0

我複製一些代碼從Orchard.Mvc.Routes.HttpHandler .ProcessRequest和此代碼獲取有效(非空)工作上下文。

using (var wcs = _workContextAccessor.CreateWorkContextScope(new HttpContextWrapper(httpContext.ApplicationInstance.Context))) 
{ 
    var workContext = wcs.WorkContext; 

可能是我不應該使用它?它實際上做了什麼?

相關問題