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

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

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

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

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

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

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

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

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

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