2009-11-24 59 views

回答

4

路由路径,除非你需要特定的控制器功能打电话给你的ASMX(如渲染输出,网络方面,等等),你可以拿出你想要在控制器中执行的逻辑,并把它放在一个新的类中,并让控制器和webservice都调用新类中的方法。

1

我不能回答第一部分(虽然我认为这是可能的),但第二部分是简单的。

它当然可以访问控制器,因为控制器只是一个具有返回结果的函数的类。它只是正确设置控制器的HttpContext,然后调用所需的操作方法。然后,您可以使用ActionResult执行任何您想要的操作 - 例如将其呈现为字符串。

4

您可以通过添加一个忽略你的Global.asax RegisterRoute方法

+0

你如何做到这一点?忽略路线路径听起来很有希 – cdub 2017-11-29 07:07:16

5

是否有可能一个.asmx文件添加到 一个MVC项目

是。

ASMX代码调用控制器,并具有 控制器返回数据到 的.asmx代码?

是的。

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

但我不鼓励这样做。相反将公共逻辑移入单独的服务图层并使用该图层。