“System.Threading.Tasks.Task`1 ”显示而不是视图

我有一个控制器

public class InvitationController : Controller { [HttpPost] [ValidateAntiForgeryToken] public async Task Create(InvitationModel invitationmodel) { if (ModelState.IsValid) { var regLink = _repo.SaveAndGetRegistrationLink(invitationmodel); IEMailer mailer = new EMailer(); var inv = mailer.Invitation(invitationmodel.Email, regLink); await Task.WhenAll(new AsyncEmailSender().SendEmail(inv)); return RedirectToAction("Index"); } return View(invitationmodel); } } 

它在我的localhost上工作正常(在发送电子邮件后重定向到所需的页面)。 我将我的网站发布到smarterasp.net

现在它显示一个字符串而不是重定向:

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

是什么原因,以及如何解决?

艾玛没有记录任何东西。 电子邮件实际上已发送。

我尝试添加MVC dll。 以下所有文件都位于我的网站dll旁边。

  • System.Web.Mvc
  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages
  • System.Web.WebPages.Razor
  • System.Web.Helpers

编辑

主机管理员从iis发送了一个日志:

 Exception: System.NullReferenceException Message: Object reference not set to an instance of an object. StackTrace: at System.Web.ThreadContext.AssociateWithCurrentThread(Boolean setImpersonationContext) at System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext) at System.Web.LegacyAspNetSynchronizationContext.CallCallbackPossiblyUnderLock(SendOrPostCallback callback, Object state) at System.Web.LegacyAspNetSynchronizationContext.CallCallback(SendOrPostCallback callback, Object state) at System.Web.LegacyAspNetSynchronizationContext.Post(SendOrPostCallback callback, Object state) at System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation.PostAction(Object state) at System.Threading.Tasks.AwaitTaskContinuation.RunCallback(ContextCallback callback, Object state, Task& currentTask) --- End of stack trace from previous location where exception was thrown --- at System.Threading.Tasks.AwaitTaskContinuation.b__1(Object s) at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 

也许他们有某种测试版,我不确定。 但是堆栈中的System.Web.LegacyAspNetSynchronizationContext表明您需要在Web.config添加UseTaskFriendlySynchronizationContext标志。

请检查以下内容: http : //forums.asp.net/t/1778103.aspx/1

我有这个完全相同的问题,我发现问题是当我从4.0升级到.NET framework 4.5时,当我升级MVC 3没有升级并且不会处理.NET 4.5。 我发现我必须升级到MVC 4,我在NuGet上找到了一个名为Nandip Makawana的升级MVC 3到MVC 4的软件包。 当我使用它时,它很好地解决了这个问题,但是我又遇到了另一个错误。 升级后,我的Web.config文件发生了变化,需要修复。 这很容易,并在抛出的错误中解释。

     <---------- This line  

网页版本更改为2,需要更改回1

  

在此更改后,我的应用程序工作得非常好。 我希望这对某人有所帮助,我花了3天时间寻找答案。