如何将Task <HttpResponseMessage>返回为真/假值

时间:2019-11-19 05:30:03

标签: c#

我想为Task<HttpResponseMessage>返回true / false,如何执行此操作。

目前我在这里遇到错误了,

  

无法从'bool'转换为'System.Func '

private Task<HttpResponseMessage> PersistData()
    {
        Trace.TraceError("test");
        return new Task<HttpResponseMessage>(true);
    }

更新:

我想返回Task<HttpResponseMessage>,其中包含一些空白或其他内容,该怎么做。

private Task<HttpResponseMessage> PersistData()
    {
        Trace.TraceError("test");
        //what to return here?
    }

3 个答案:

答案 0 :(得分:1)

您不能为HttpResponseMessage返回true或false,但是可以更改返回值的类型。

private Task<bool> PersistData()
 {
    Trace.TraceError("test");
    return Task.FromResult(true)
 }

已更新 不同步

private HttpResponseMessage PersistData()
{
    Trace.TraceError("test");
    return new HttpResponseMessage(HttpStatusCode.OK);
}

异步

 private Task<HttpResponseMessage> PersistData()
        {
            Trace.TraceError("test");
            return Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK));
        }

答案 1 :(得分:1)

您不能完全返回True / False,但是可以通过底层代码来解决此问题。

Private Task<HttpResponseMessage> PersistData()
    {

        Trace.TraceError("test");

        return new Task<HttpResponseMessage>(() => new HttpResponseMessage(HttpStatusCode.Accepted));
    }

然后,您可以检查HttpStatuseCode是否为“ HttpStatuseCode.Accepted”,其含义为true或其他。同样,

   Private bool Validation()
    {
        var temp = PersistData();

        if (temp.Result.StatusCode == HttpStatusCode.Accepted)
            return true;
        else 
            return false;
    }

答案 2 :(得分:0)

您可以使用以下代码返回空字符串:

return Task.FromResult(Request.CreateResponse(HttpStatusCode.OK, string.Empty));

此处Request.CreateResponse是创建HttpResponseMessage的扩展方法。您可以在here阅读文档。

您可以在here阅读有关Task.FromResult的信息。