2009-11-24 9 views

Répondre

4

Sauf si vous avez besoin de fonctionnalités spécifiques au contrôleur (tel que rendu de sortie, le contexte Web, etc.), vous pouvez prendre la logique que vous voulez exécuter dans le contrôleur et la placer dans une nouvelle classe et que le contrôleur et le service web appellent la méthode dans la nouvelle classe.

1

Je ne peux pas répondre à la première partie (bien que je suppose que c'est possible), mais la deuxième partie est simple.

Il est bien sûr possible d'accéder au contrôleur car le contrôleur est juste une classe avec des fonctions qui renvoient des résultats. Il s'agira simplement de définir correctement le HttpContext du contrôleur, puis d'invoquer la méthode d'action souhaitée. Vous pouvez alors faire ce que vous voulez avec ActionResult - le rendre à une chaîne par exemple.

4

Vous pouvez appeler votre asmx en ajoutant un Ignore chemin Route dans votre global.asax méthode RegisterRoute

+0

Comment faites-vous cela? ignorer le chemin d'accès semble prometteur – cdub

5

Est-il possible d'ajouter un fichier .asmx à un projet MVC

Oui.

code asmx appel du contrôleur et ont les données de retour du contrôleur au code .asmx?

Oui.

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(); 

Mais je déconseille de le faire. Au lieu de déplacez la logique commune dans un calque de service distinct et utilisez celui-là.

Questions connexes