如何正确配置 Web-API2 路由以接受转到对象的字符串?

How to correctly configure Web-API2 Routes to accept strings that go to an object?

我有一个 .NET 项目,它有一个 Web API 部分,它应该接受外部请求。该操作接受一个对象,然后进一步使用该对象。问题是在使用 postman app 进行测试时,动作被命中但变量未被传递。

这是我在 postman 中的 URL 的示例:http://localhost:12345/api/login/postlogin?Username=un&Password=pw

我试过使用 [frombody],只有当我收到一个字符串时才有效。我的应用程序将使用大量来回传递的数据。我还在 Whosebug 上尝试了多种解决方案,包括 [FromUri]。 post 仍然为空。

WebAPi.Config snippet:
 public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            config.EnableCors();
            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
Action within Controller:

        // POST: api/postLogin/
        [AllowAnonymous]
        [System.Web.Http.HttpPost, System.Web.Http.Route("postlogin")]
        public async Task<IHttpActionResult> PostLogin(LoginDTO login)
        {

        }

前面所述的预期结果是将变量作为对象接收,然后在操作中使用它们。

您的路由配置正确。您应该对参数使用 [FromBody] 属性,因为这是一个 POST 请求。 你永远不应该使用 GET 请求来进行身份验证!

public async Task<IHttpActionResult> PostLogin([FromBody]LoginDTO login)