Beste,
Ik ben op dit moment bezig met het ontwikkelen van een Content Management Systeem op maat. Ik maak gebruik van verschillende technieken als Dependency Injection van Ninject, Entity Framework, Code First etc.
Ik probeer dus dynamische url's op te halen met behulp van Ninject. Dit is gelukt tot op een zekere hoogte.
Zodra de pagina ongeveer 20 request krijgt komt er een melding dat de database disposed is. Maar nog wel benodigd is voor de query. Nu vermoed ik dat het komt door de scope, gezien ik
gebruik voor het ophalen van de service. (injection via de contructor in de routeconfig is niet mogelijk).
Ik zit nu een tijdje te zoeken naar oplossingen zonder resultaat.
Wellicht dat iemand van jullie mij in de juiste richting kan duwen?
Mijn code is als volgt
Ik hoop dat iemand mij in de juiste richting kan duwen om het probleem op te lossen.
Alvast bedankt voor het meedenken.
Met vriendelijke groet,
Kevin.
Ik ben op dit moment bezig met het ontwikkelen van een Content Management Systeem op maat. Ik maak gebruik van verschillende technieken als Dependency Injection van Ninject, Entity Framework, Code First etc.
Ik probeer dus dynamische url's op te halen met behulp van Ninject. Dit is gelukt tot op een zekere hoogte.
Zodra de pagina ongeveer 20 request krijgt komt er een melding dat de database disposed is. Maar nog wel benodigd is voor de query. Nu vermoed ik dat het komt door de scope, gezien ik
code:
1
| DependencyResolver.Current.GetService |
gebruik voor het ophalen van de service. (injection via de contructor in de routeconfig is niet mogelijk).
Ik zit nu een tijdje te zoeken naar oplossingen zonder resultaat.
Wellicht dat iemand van jullie mij in de juiste richting kan duwen?
Mijn code is als volgt
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| public class RouteConfig { /// <summary> /// The register routes. /// </summary> /// <param name="routes"> /// The routes. /// </param> public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "CmsRoute", url: "{*permalink}", defaults: new { controller = "Page", action = "Index" }, constraints: new { permalink = DependencyResolver.Current.GetService(typeof(IContentPageConstraints)) }); routes.MapRoute( name: "Default", url: "{area}/{controller}/{action}/{id}", defaults: new { area = "Management", controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "NAMESPACE.Web.Areas.Management.Controllers" }); } } |
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| public class ContentPageConstraints : IRouteConstraint, IContentPageConstraints { /// <summary> /// The context. /// </summary> private readonly IMyDbContext context; /// <summary> /// Initializes a new instance of the <see cref="ContentPageConstraints"/> class. /// </summary> /// <param name="context"> /// The context. /// </param> public ContentPageConstraints(IMyDbContext context) { this.context = context; } public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { if (values[parameterName] != null) { var permalink = values[parameterName].ToString(); return this.context.ContentPages.Any(p => p.Url == permalink); } return false; } } |
Ik hoop dat iemand mij in de juiste richting kan duwen om het probleem op te lossen.
Alvast bedankt voor het meedenken.
Met vriendelijke groet,
Kevin.
[ Voor 0% gewijzigd door RobIII op 30-05-2014 17:33 . Reden: code-highlighting toegepast (d.m.v. [code=c#]) ]
