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

如何从 jQuery ajax 调用将复杂对象传递给 ASP.NET WebApi GET?

ASP.NET Web API - 请求的资源不支持 http 方法“GET”