2015-03-13 41 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; 

可能是我不应该使用它?它实际上做了什么?