2010-10-28 9 views
14

Tengo un servicio WCF (digamos TestService.svc dentro del directorio services de un Área en una aplicación MVC. Esta área se combina en la aplicación principal . la zona se llama contentExponer los servicios WCF que pertenecen a un Área en la aplicación MVC en una ruta enrutada

las rutas se han configurado y el área funciona bien Para acceder a la acción Index en el controlador Home que puedo hacer ya sea:..

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

o

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

El archivo SVC sin embargo, sólo se puede acceder a través de:

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

La URL debe incluir el directorio areas, no puedo acceder a él directamente a través de http://my-host/content/services/TestService.svc. Si lo intento me da un error 404.

¿Hay alguna manera de configurar la aplicación para que enrute la solicitud SVC a través de la misma tabla de rutas que los controladores? No quiero tener que usar areas para los servicios.

Respuesta

24

Si tiene la libertad de utilizar .Net 4.0, puede considerar hacer disponible su servicio WCF a través de un ServiceRoute en lugar de a través de un archivo .svc.

Esto le permitirá evitar tener el archivo TestService.svc con un código de comprobación TestService.svc.cs. En sus Global.asax.cs tendrá la siguiente:

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

Su servicio debe entonces ser accesible a través de http://my-host/TestService.

Es posible que pueda cambiar el argumento "TestService" al "/content/services/TestService" o algo que funcione mejor para sus necesidades.

+0

Como nota al margen, no puede iniciar rutas de ruta con una barra diagonal, por lo que sería 'content/services/TestService'. – Kezzer

+0

Pude utilizar esta solución después de aplicar la restricción de ruta como en http://geekswithblogs.net/michelotti/archive/2010/09/22/wcf-rest-services-inside-mvc-projects.aspx –

+0

Acabo de guardar mi vida – TheQult

Cuestiones relacionadas