c# - "System.Threading.Tasks.Task` 1[System.Web.Mvc.ActionResult]”显示而不是 View

标签 c# .net asp.net-mvc asp.net-mvc-4

我有一个 Controller

public class InvitationController : Controller
{
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> 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);
    }
}

它在我的本地主机上运行良好(发送电子邮件后重定向到所需页面)。 我将我的网站发布到 smarterasp.net

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

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

是什么原因,如何解决?

Elmah 没有记录任何内容。电子邮件已实际发送。

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

  • 系统.Web.Mvc
  • Microsoft.Web.Infrastructure
  • 系统.Web.Razor
  • 系统.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.<ThrowAsyncIfNecessary>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

关于c# - "System.Threading.Tasks.Task` 1[System.Web.Mvc.ActionResult]”显示而不是 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17713535/

相关文章:

c# - 'await Task.Delay(5000)'之后的代码直到relaycommand执行完成才执行

c# - 如何从 C# 中的 List<T> 中删除对象并返回删除的对象?

.net - Application.ThreadException : memory leak if not detached?

mysql - 如何使用 VB.Net 中已定义的列填充 datagridview

c# - 如何升级到 ASP.NET Core 2.0

c# - 如何使用 C# .NET 4 实现 DDD

asp.net - "Adding sign-in with Microsoft"示例在我的工作 VDI 上不起作用

c# - 多 handle slider MVC

c# - 如何在 mouseOver 上更改按钮背景图像?

c# - 拆分现有分片时弹性数据库拆分合并工具问题