Bonjour,
Je suis en train de créer un web service utilisant l'injection de dépendance. Jusque là pas de problème. Par contre quand j'essai de préciser quelle classe il faut utiliser pour l'un de mes controller, le WS me renvoi l'erreur suivante:
Le code que j'utilise pour influencer l'utilisation d'une classe pour mon controller est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Resolution of the dependency failed, type = \"TEST.WMS.Interface.IAdsWms\", name = \"DefaultRepository\".\r\n Exception occurred while: while resolving.\r\n Exception is: InvalidOperationException - The current type, ADS.TEST.Interface.IAdsWms, is an interface and cannot be constructed. Are you missing a type mapping?\r\n -----------------------------------------------\r\n At the time of the exception, the container was:\r\n \r\n Resolving TEST.WMS.Interface.IAdsWms,DefaultRepository\r\n "} System.Exception {Microsoft.Practices.Unity.ResolutionFailedException}
Je n'arrive pas à résoudre ce problème. Si quelqu'un pouvait m'aider ce serai vraiment génial.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 UnityControllerFactory : IHttpControllerActivator { private readonly IUnityContainer container; private readonly DefaultHttpControllerActivator defaultActivator; public UnityControllerFactory(IUnityContainer container) { this.container = container; defaultActivator = new DefaultHttpControllerActivator(); } public IHttpController Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType) { if (controllerType == typeof(WMSController)) { var queryVals = request.RequestUri.ParseQueryString(); var cls = queryVals["class"]; if (String.IsNullOrEmpty(cls)) { cls = "DefaultRepository"; } IAdsWms o = container.Resolve<IAdsWms>(cls); return new WMSController(o); } return defaultActivator.Create(request, controllerDescriptor, controllerType); } }
Merci par avance.
Partager