ASP.NET WebAPI 对PUT/DELETE的支持?

发布于 2022-09-01 22:55:18 字数 2659 浏览 16 评论 0

我的测试环境是Windows 10 pro + IIS10
我在这个环境上部署了一个 ASP.NET WebAPI 程序,在使用 Postman 进行测试发现对于 PUT/DELETE 都无法支持。
图片描述

根据网上的描述,我把 web.config 改成如下
图片描述

然后重新编译发布并 iisreset, 结果在Postman中仍是
图片描述

试了很久,无解,求教各位大神指点一二...
(BTW, Postman会不会缓存请求?)

附:对应Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace WebLab1.Controllers
{
    public class Member
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

    public class DefaultController : ApiController
    {
        List<Member> _Members = new List<Member>(new Member[] {
            new Member { ID = 1, Name = "Bruce S" },
            new Member { ID = 2, Name = "Cindy K"},
            new Member { ID = 3, Name = "Michael J"}
        });

        public IEnumerable<Member> Get()
        {
            return _Members;
        }

        public Member Get(int id)
        {
            return _Members.FirstOrDefault(m => m.ID == id);
        }

        public HttpResponseMessage Post(Member newMember)
        {
            _Members.Add(newMember);
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);
            response.StatusCode = HttpStatusCode.Created;//201
            string uri = Url.Link("DefaultApi", new {id = newMember.ID });//Related to route setting.
            response.Headers.Location = new Uri(uri);
            return response;
        }

        public HttpResponseMessage Put(int id, Member member)
        {
            var updateMember = Get(id);
            updateMember.Name = member.Name;
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, updateMember);
            string uri = Url.Link("DefaultApi", new { id = id });
            response.Headers.Location = new Uri(uri);
            return response;
        }

        public HttpResponseMessage Delete(int id)
        {
            _Members.Remove(Get(id));
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.NoContent);//204
            return response;
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心不设防 2022-09-08 22:55:18

好吧,是Postman用错了...URL不对..

温馨耳语 2022-09-08 22:55:18

正确的URL应该是什么呀。我也测试不成功。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文