这里有一个非常简单的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
(或升级到的任何版本(。