gpt4 book ai didi

c# - ASP.NET WebApi Post 方法 - 传递参数时出现 404

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

我这辈子都弄不明白。我有一个带有 Get 和 Post 方法的 web api Controller 。 Get 方法在有参数和没有参数的情况下都可以正常工作,但是当我尝试向它添加 String 参数时,帖子中断了。下面是我的代码。

路线:

        config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = UrlParameter.Optional }
);

Controller :

public class AuditController : ApiController
{
public String Post(String test)
{
return "Success : " + test;
}

public String Get(String test)
{
return "Success : " + test;
}
}

要求:

    var request = WebRequest.Create("http://localhost:42652/Audit");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write("test=TEST");
}
WebResponse webResponse = request.GetResponse();

我已经根据请求尝试了很多变体,我觉得我缺少一些简单的东西。感谢您的帮助。

最佳答案

由于您期望参数 test 来自请求的主体,因此您需要使用 FromBody 属性对其进行修饰。示例:([FromBody]字符串测试)。对于其他复杂类型,情况并非如此,例如:Employee 类被隐式地认为来自 Body。

读取 GET 请求。它应该只适用于来自查询字符串 /Audit?test=Mike

的测试

以下博客文章包含有关参数绑定(bind)的更多详细信息: http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx

此外,我看到您正在使用 WebRequest。您是否考虑过改用 System.Net.Http 中的 HttpClient?

关于c# - ASP.NET WebApi Post 方法 - 传递参数时出现 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048309/

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