2009-11-24 11 views
6

¿Es posible agregar un archivo .asmx a un proyecto MVC y hacer que el código .asmx llame al controlador y que el controlador devuelva los datos al código .asmx?Agregue un archivo .asmx a asp.net MVC?

+0

¿Quieres aceptar la respuesta? –

Respuesta

4

A menos que necesite una funcionalidad específica al controlador (como resultado representado, contexto web, etc.), se puede sacar la lógica que desea ejecutar en el controlador y ponerla en una nueva clase y hacer que tanto el controlador como el servicio web invoquen el método en la nueva clase.

1

No puedo responder la primera parte (aunque supongo que es posible), pero la segunda parte es simple.

Por supuesto, puede acceder al controlador porque el controlador es solo una clase con funciones que devuelven resultados. Simplemente será una cuestión de configurar el HttpContext del controlador correctamente y luego invocar el método de acción que desee. A continuación, puede hacer lo que quiera con ActionResult: renderizarlo en una cadena, por ejemplo.

4

Puede llamar a su asmx añadiendo una Ignorar trayectoria de la ruta en su global.asax método RegisterRoute

+0

¿cómo se hace esto? ignorar ruta de ruta suena prometedor – cdub

5

¿Es posible añadir un archivo .asmx a un proyecto de MVC

Sí.

código asmx llamada al controlador y tienen los datos de retorno del controlador en el código .asmx?

Sí.

var controller = new YourController(); 
var httpContext = new HttpContextWrapper(this.Context); 
var routeData = new RouteData(); 
var requestContext = new RequestContext(httpContext, routeData); 
controller.ControllerContext = new ControllerContext(requestContext, controller); 

var result = controller.YourAction(); 

Pero desaconsejo hacer eso. En su lugar, mueve la lógica común a una capa de servicio independiente y usa esa.

Cuestiones relacionadas