首页 > 解决方案 > 在 ASP.Net MVC 项目中无法访问 HttpPost 方法

问题描述

摘要:
我有一个 Asp.net MVC 项目和一个控制台窗口应用程序。
我尝试让控制台应用程序通过控制器中的 [HttpPost] 方法将文件发布到 Web 项目。
我的两个项目都在本地运行,每个项目都在自己的 Visual Studio 实例中。
我的问题是我的 [httppost] 方法从未被调用过。

详细信息:
这是web项目中的代码

public class DevController : Controller  
{  
    [HttpPost]  
    public ActionResult UploadStuff(HttpPostedFileBase file)  
    {
        System.Diagnostics.Debugger.Break(); //This breakpoint is never reached
        return View();
    }
}

这是控制台应用程序中的代码:

static public async void UploadStuff(Stream streamToUploadToWebProject)
{
    var content = new MultipartFormDataContent();
    content.Add(new StreamContent(streamToUploadToWebProject), "WhateverName");
    var httpClient = new HttpClient();
    string url = @"http://localhost:12345/dev/UploadStuff";
    var response = await httpClient.PostAsync(url, content);
}

注意:
1) http://localhost:12345/ :这是我运行 Web 项目时在浏览器中显示的 url。
2) 发送的文件是非结构化 blob。
3)我发现的大多数相关帖子都是关于上传 json 文件(如这篇文章),或者是关于从网页发布文件(在这种情况下,还有一个“Get”方法返回一个包含“上传”的视图按钮); 这两种情况都和我的不一样。
4) [编辑] HttpClient.PostAsync 返回“404”错误。

我的问题:
我做错了什么;我应该如何编写 [HttpPost] 方法,以便它被调用?

标签: c#asp.netasp.net-mvchttp-post

解决方案


在您的控制器中尝试在参数之前使用 [FromBody] 属性。

[HttpPost]  
public ActionResult UploadStuff([FromBody]HttpPostedFileBase file)

推荐阅读