ASP.Net WepAPI - 我可以从 Get Methods 获得结果,但我不能发布
Posted
技术标签:
【中文标题】ASP.Net WepAPI - 我可以从 Get Methods 获得结果,但我不能发布【英文标题】:ASP.Net WepAPI - I can get results from Get Methods but I cannot Post 【发布时间】:2021-10-03 18:02:42 【问题描述】:我的 API 包含 2 个 Get 方法和 1 个 POST。 2 Gets 工作,但 POST 返回此消息:
"Message":"请求的资源不支持http方法'GET'。"
这些是我的方法:
[HttpGet]
public IEnumerable<tblMetrHist> Get(string accntnum)
...
[HttpGet]
public IEnumerable<CustomerInfo> GetCustomer(string accntnum)
...
[HttpPost]
public IHttpActionResult Post([FromUri] string num, [FromUri] string reading)
using (CustomerEntities entities = new CustomerEntities())
entities.tbl1.Add(new tbl1()
Number = num,
Reading = reading
);
entities.SaveChanges();
return Ok();
我的路线很简单:
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/controller/action"
);
所以我不确定如何让 API 将该方法识别为“发布”而不是“获取”。请帮忙?
【问题讨论】:
您用于获取和发布的网址是什么?你使用的是什么版本的 MVC? 您是使用 HTTP url 还是 HTTPS url 发布数据?试试下面的链接。***.com/questions/40640317/… ***.com/questions/35065385/… @Serge MVC 是:newVersion="5.2.7.0" 至于网址,它们是 https..api/Data/Get?num=num, https..api/Data/GetCustomer? num=num 和 https..api/Data/Post?num=num&reading=reading。就像我说的两个 Gets work 但不是 Post,它给了我我在 OP 中输入的信息 @ChinmayT 始终在 https 【参考方案1】:创建视图模型
public class ViewModel
public string Num get; set;
public string Reading get; set;
试试这个
[HttpPost()]
public IHttpActionResult Post([FromUri] ViewModel model)
var num=model.Num;
.....
更新
由于浏览器自动执行get调用,我推荐PO使用其他工具发帖。 Chrome的“Advanced Rest Client”被PO选中发帖,一切正常。
【讨论】:
我试过这个,但我仍然得到错误:“消息”:“请求的资源不支持 http 方法 'GET'。” @KristinVernon 您如何调用 Post 方法?你使用应用程序还是邮递员?你能发布一些代码吗? 我从 VisualStudio 调试 API,我只是使用 url 进行 Post 调用 您使用什么代码来拨打电话?默认情况下,从浏览器会被调用 很高兴能为您提供帮助。请不要忘记接受答案,因为它很有帮助以上是关于ASP.Net WepAPI - 我可以从 Get Methods 获得结果,但我不能发布的主要内容,如果未能解决你的问题,请参考以下文章
在 asp net core MVC 应用程序中创建和验证 JWT 令牌(没有客户端服务器方法)
asp.net mvc - 初始 GET 有效,后续请求导致“视图必须从 ViewPage 派生,...”错误
ASP.Net Core 6,SPA,端点 - 我无法从 http get 请求调用控制器
AJAX 调用 WebAPI Get 方法的参数不下载文件 ASP .NET MVC