C# 将文件从控制台发送到mvc

C# 将文件从控制台发送到mvc,c#,asp.net-mvc,file-upload,C#,Asp.net Mvc,File Upload,我在一个MVCAPI和一个控制台应用程序中工作,并将其作为服务使用 mvc代码如下所示: [HttpPost] public ActionResult Index(HttpPostedFileBase file) { if (file.ContentLength > 0) { var fileName = System.IO.Path.GetFileName(file.FileName); v

我在一个MVCAPI和一个控制台应用程序中工作,并将其作为服务使用

mvc代码如下所示:

[HttpPost]
    public ActionResult Index(HttpPostedFileBase file)
    {

        if (file.ContentLength > 0)
        {
            var fileName = System.IO.Path.GetFileName(file.FileName);
            var path = System.IO.Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
            file.SaveAs(path);
        }

        return RedirectToAction("Index");
    }

我尝试了不同的方法,但在mvc端我只能得到
file==null
,有什么帮助吗

如果我理解正确,您正试图从控制台应用程序中创建一个web请求,该请求将触发控制器上的此特定方法

无论出现什么问题,这都是一种正确的调试方法:

1) 使用浏览器测试该方法。调试/纠正,直到其正常工作。 2) 使用http调试器嗅探正确的http请求(由Fiddler完成) 3) 在console应用程序中使用
WebRequest
,并设计其参数,以便您可以模拟使用FIDER嗅探的参数集

你完了

这种方法不可能不起作用。应用程序服务器无法判断是哪个客户端触发了请求。如果浏览器请求正常工作,那么您可以使用
WebRequest
模拟相同的参数集。Fiddler(或类似工具)可以帮助您找出特定的POST参数应该是什么

对我来说,你很可能是:

a) 文件传递错误(编码错误,post参数之间的分隔符错误)(边界) b) 未正确设置请求类型


无论如何-如果没有代码,就不可能说出来,因此我给你一个算法,你可以用它自己解决问题。

你能描述一下如何从控制台应用程序发出请求(甚至可能显示代码)?你检查过文件是否真的被传递到方法中了吗?它的长度实际上大于0?编辑:这似乎回答了你的问题。问题是文件没有传递给方法,我不知道如何实现。你在Fiddler中检查了请求吗?