如何使返回内容的简单异步操作方法返回实际内容而不是类型



这里有一个非常简单的MVC异步操作:

[HttpPost]
public async Task<ContentResult> Trial()
{
ContentResult contentResult = await new Task<ContentResult>(()=>new ContentResult{Content="Hi"});
return contentResult;
}

我希望一篇关于这一行动的帖子能以内容";嗨;。但事实并非如此。它以内容";System.Threading.Tasks.Task `1[System.Web.Mvc.ContentResult]";。

以下是完整的回复:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
X-UA-Compatible: IE=Edge
Date: Mon, 23 Nov 2020 17:02:37 GMT
Content-Length: 166

System.Threading.Tasks.Task`1[System.Web.Mvc.ContentResult]

我很想了解为什么,以及如何获得内容;嗨"如预期的那样,使用Async函数。谢谢

如果您使用的是非常旧的MVC版本,就会发生这种情况。您必须(至少(在.NET Framework 4.5上运行ASP.NET 4.5,任务返回操作方法才能工作。Microsoft.Bcl.Async不适用于ASP.NET项目

如果您的web服务器上有.NET Framework 4.5或更新版本,则可以将项目升级到ASP.NET 4.5。升级后,必须关闭"怪癖模式";以便CCD_ 2正常工作。我更喜欢将web.config中的httpRuntime.targetFramework设置为4.5(或升级到的任何版本(。

最新更新