繁体   English   中英

使用公共异步任务从API HTTP Post返回json响应时,TResult应该是什么

[英]What should TResult be when using public async Task to return json response from API HTTP Post

帐户服务:

public async Task<string> PostRegistrationToApi(NameValueCollection form)
        try
        {
            string str = await url.WithHeaders(new { Accept = "application /json", User_Agent = "Flurl" }).PostJsonAsync(myDictionary).ReceiveJson();
            return str;
        }

这是界面中的样子:

public interface IAccountService
{
    Task<string> PostRegistrationToApi(NameValueCollection form);

这是我的控制器视图:

                string str = await _accountService.PostRegistrationToApi(myform);
                return RedirectToAction("Register");

这是我收到的错误消息:

无法将类型'System.Dynamic.ExpandoObject'隐式转换为'string'

我不知道如何解决此错误。 有人可以告诉我此错误消息的含义以及如何解决吗? 起初,我以为是TResult类型问题,但即使将变量更改为字符串类型,也似乎与TResult一致。 我仍然遇到相同的错误。 谢谢!

您收到该错误是因为ReceiveJson返回的是dynamic而不是字符串。 这使您可以将结果作为具有属性的对象使用,而不必声明匹配的类。 这对于快速且肮脏的JSON响应非常方便,因为您知道响应的形状不会改变,但是您放弃了编译时类型检查,因此在大多数情况下,我建议创建匹配的类并使用RecieveJson<T>

如果您确实想找回字符串,则可以改用ReceiveString 如果您只是将响应转发到其他内容,或者将其转储到日志或其他有用的内容中。 但是,如果您需要以某种方式处理 JSON结果,我建议您使用ReceiveJsonReceiveJson<T>以便您可以将结果作为C#对象使用。

暂无
暂无

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

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