gpt4 book ai didi

c# - 在 ajax 发布后检索数据时的 Http 404(使用 web api)

转载 作者:可可西里 更新时间:2023-11-01 16:11:10 25 4
gpt4 key购买 nike

我开始使用 asp.net、ajax/jquery 和 web api。

我写了一个非常基本的网络应用程序只是为了了解发生了什么:

这里是模型:

public class Author
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
}

这里是 Controller :

public class AuthorsController : ApiController
{
List<Author> authors = new List<Author>
{
new Author {Id=1, Name="Alan", Surname="Timo" },
new Author {Id=2, Name="Jack", Surname="Russel"}
};


[HttpGet]
public IHttpActionResult GetAuthor(int id)
{
Author autore = authors.FirstOrDefault(p => p.Id == id);

if (autore == null)
return NotFound();
else
return Ok(autore);
}

[HttpPost]
public Author PostAutore([FromBody] Author author)
{
authors.Add(author);

foreach (Author aut in authors)
{
Debug.WriteLine(aut.Id + " " + aut.Name + " " + aut.Surname);
}

return author;
}
}

这里是 jquery 中的 get 函数和 post 函数:

function GetAuthorById() {
var id = $('#authorID').val();
$.getJSON('api/authors/' + id).done(function (data) {
alert(data.Name + data.Surname);
});
}


function PostAuthor() {
var author = {
Id: $('#newAuthorId').val(),
Name: $('#newAuthorName').val(),
Surname: $('#newAuthorSurname').val()
};

$.post(
'api/authors',
author,
function (data) {
alert(data.Name + data.Surname);
}
);
}

我的问题是关于在成功调用 POST 后使用 GET。假设我已经触发了 post 方法并且 Controller 成功地将新作者添加到作者列表中(我是在 Controller 的 Post 方法中检查列表中每个作者的控制台详细信息的日志记录)。现在,如果我尝试像“api/authors/3”这样的 GET,我得到一个 HTTP 404,而一个带有 uri“api/authors/1”或“api/authors/2”的 GET 给出一个 HTTP 200。谁能解释我为什么尝试检索通过成功的 POST 添加的数据时,服务器给我一个 404?

最佳答案

为每个请求实例化一个 Controller 。

您需要通过将 authors 字段设置为 static 来确保所有 Controller 实例共享相同的 authors 实例:

static List<Author> authors = new List<Author> 
{
new Author {Id=1, Name="Alan", Surname="Timo" },
new Author {Id=2, Name="Jack", Surname="Russel"}
};

关于c# - 在 ajax 发布后检索数据时的 Http 404(使用 web api),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27830531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com