c# - 在 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] 方法,以便它被调用?
解决方案
在您的控制器中尝试在参数之前使用 [FromBody] 属性。
[HttpPost]
public ActionResult UploadStuff([FromBody]HttpPostedFileBase file)
推荐阅读
- python-3.7 - 如何在没有 HTML/TAG 的情况下以文本形式清除我的数据?
- matlab - 我有几个情节的代码。我如何知道特定绘图来自代码的哪一部分(Matlab)?
- python - 如何用空白输入(str)结束while循环
- java - 使用java将服务器屏幕投射到客户端
- java - 如何在Java中的数组中来回走动
- c# - 无法在 .NET Core Web API 引用的 .NET Framework 库中引用 app.config
- video - 适用于 iOS 的 Exoplayer - 类似于 TikTok 的视频流
- javascript - JS 脚本 - if 语句忽略 jQuery 代码
- java - 大数字循环
- oracle - 如何在 oracle SQL Developer 中将选择性数据从一个数据库迁移到另一个数据库?