从.net中的另一个应用程序调用asp mvc Controller Action?

时间:2010-02-07 04:39:19

标签: c# asp.net-mvc console

我需要从我的控制台应用程序中运行一个引用我的MVC应用程序的Controller Action。

这背后的原因是因为有一些特殊的Action方法,我不能简单地复制到新的应用程序。 (因为控制事物)

所以我只想询问是否可以通过Console应用程序调用控制器操作方法?我怎样才能将文件上传到控制器?

这是我用于上传文件的ActionResult的示例?我该如何发送Request.Files呢?

  public ActionResult ImageUp(){
        foreach (string fname in Request.Files)
        {
            HttpPostedFileBase _file = Request.Files[fname];
        }
  }

2 个答案:

答案 0 :(得分:0)

System.Net.WebClient.UploadFile()可以将文件上传到网址。

如果您要上传多个文件,或者在请求中包含其他非文件参数,请参阅此问题的已接受答案Upload files with HTTPWebrequest (multipart/form-data)

也就是说,一个更好的解决方案是将ImageUp()重构为2个方法 - 第一个从HttpRequest中提取文件,第二个对这些文件进行处理。然后第二种方法可以在没有HttpContext的情况下使用,例如在控制台应用程序或单元测试中。

答案 1 :(得分:0)

我很确定你可以,但要正确插入所有内容需要花费一些工作。您可以创建控制器类的实例,并从该实例调用ImageUp方法。要正确设置Request.Files,您需要创建自己的ControllerContext实例,以便将所需的值推送到Request.Files。