繁体   English   中英

没有得到HttpClient.PostAsync()的结果

[英]Not getting result of HttpClient.PostAsync()

开发需要调用Json REST Api的.NET Core Web应用程序。

呼叫者,召集者 :

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            AuthorizationUser user = new AuthorizationUser { User = "<user>", Application = "<app>" };

            var content = new StringContent(JsonConvert.SerializeObject(user), Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync(new Uri("http://localhost:8081/Roles"), content);
            // ...
        }

被叫方:

    [AllowAnonymous]
    [HttpPost]
    public HttpResponseMessage Post(AuthorizationUser user)
    {
        try
        {
            user = FillRoles(user);
            return Request.CreateResponse(HttpStatusCode.OK, user);
        }
        catch (System.Exception ex)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
        }
    }

模型(在呼叫者和被呼叫者中):

public class AuthorizationUser
{

    public AuthorizationUser() // Added thanks to CodeFuller
    { }

    public AuthorizationUser(string user, string application)
    {
        User = user ?? throw new ArgumentNullException(nameof(user));
        Application = application ?? throw new ArgumentNullException(nameof(application));

    }
    public string User { get; set; }
    public string Application { get; set; }
    public IEnumerable<string> Roles { get; set; }
}

当到达被调用方的断点时,接收到的user始终为空。 我尝试在它之前添加[FromBody][FromUri] ,但结果相同。

我做错了什么?

我无法重现你的问题,掌握正确填写用户UserApplication领域。

似乎在模型绑定期间发生了一些错误。 要诊断问题,请检查以下内容:

  1. Post()方法中ActionContext.ModelState.IsValid的值是什么。 true还是false
  2. 如果为假,请在调试器中检查集合ActionContext.ModelState.Values 它应该包含模型绑定错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM