2010-10-28 3 views
14

J'ai un service WCF (disons TestService.svc assis dans le répertoire services d'une zone dans une application MVC Cette zone est combinée dans l'application principale . la région est appelée contentExposer les services WCF qui appartiennent à une zone dans l'application MVC sur un chemin routé

les Pour accéder à l'action Index sur le contrôleur Home itinéraires ont été mis en place et la zone fonctionne très bien je peux le faire soit:..

http://my-host/areas/content/index/home

ou

http://my-host/content/index/home

Le fichier SVC ne peuvent cependant être accessibles via:

http://my-host/areas/content/services/TestService.svc

L'URL doit inclure le répertoire areas, je ne peux pas y accéder directement via http://my-host/content/services/TestService.svc. Si j'essaie, j'obtiens une erreur 404.

Y a-t-il un moyen de configurer l'application afin qu'elle achemine la demande SVC via la même table de routage que les contrôleurs? Je ne veux pas avoir à utiliser areas pour les services.

Répondre

24

Si vous avez la liberté d'utiliser .Net 4.0, vous pouvez envisager de rendre votre service WCF disponible via un ServiceRoute plutôt que via un fichier .svc. Cela vous permettra d'éviter d'avoir le fichier TestService.svc avec un code-behind TestService.svc.cs. Dans votre Global.asax.cs vous avez les éléments suivants:

public static void RegisterRoutes(RouteCollection routes, IUnityContainer container) 
{ 
    ... other MVC route mapping .... 
    routes.Add(new ServiceRoute("TestService", new ServiceHostFactory(), typeof(LoaEvents))); 
} 

Votre service devrait alors être accessible via http://my-host/TestService.

Vous pourriez être en mesure de changer l'argument "TestService" en "/content/services/TestService" ou quelque chose qui fonctionne mieux pour vos besoins.

+0

En note, vous ne pouvez pas démarrer les chemins de routage avec une barre oblique, ce serait donc 'content/services/TestService'. – Kezzer

+0

J'ai été en mesure d'utiliser cette solution après avoir appliqué la contrainte de route comme dans http://geekswithblogs.net/michelotti/archive/2010/09/22/wcf-rest-services-inside-mvc-projects.aspx –

+0

je viens de sauvegarder ma vie – TheQult

Questions connexes