HttpClient+WebApi+多个Post +多个参数

本文关键字:参数 多个 Post HttpClient+WebApi+ | 更新日期: 2023-09-27 18:06:20

我是asp.net的新手,我遇到了一个小问题,我在MVC项目中创建了一个新的webapi控制器,当我试图从这个控制器获得响应时,我得到404错误:s

下面是所用控制器的代码:

public class SampleController : ApiController
    {
        [HttpPost]
        public string Auth(string number, string password)
        {
            ....
        }
        [HttpPost]
        public string SendSms(string smsTo, string content)
        {
            ....
        }
    }

WebApiConfig:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

和这里的代码c#:

using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:66893");
                var content = new FormUrlEncodedContent(new[] 
            {
                new KeyValuePair<string, string>("number", "login"),
                new KeyValuePair<string, string>("password", "password")
            });
                var result = client.PostAsync("/api/sms/auth", content).Result;
                string resultContent = result.Content.ReadAsStringAsync().Result;
                Console.WriteLine(resultContent);
            }

当我在XHR Poster中尝试localhost:66893/api/sms/auth?number=xxx&password=xxx时,我得到了结果:s

请帮助非常感谢

HttpClient+WebApi+多个Post +多个参数

您的客户端发布到"/api/sms/auth",但由于您将控制器命名为SampleController它应该是"/api/sample/auth"。

这是因为Web API在{Controller}变量的值中添加了"Controller"来查找控制器。

但是你的路由没有包含动作。应该是:

routeTemplate: "api/{controller}/{action}/{id}",