2013-07-18 11 views
6

Ho un regolatore di"System.Threading.Tasks.Task`1 [System.Web.Mvc.ActionResult]" invece di vista

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); 
    } 
} 

Funziona bene sul mio localhost (reindirizza a una pagina desiderata dopo aver inviato l'e-mail). ho pubblicato il mio sito web per smarterasp.net

E ora si vede una stringa invece di reindirizzamento:

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

Qual è la ragione, e come risolvere il problema?

Elmah non ha registrato nulla. L'email è stata effettivamente inviata.

Ho provato ad aggiungere MVC dll. Tutti i file sottostanti si trovano accanto alla mia dll del sito.

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

modificare

amministratore Host mi ha mandato un registro da 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() 
+0

Hai pubblicato 'System.Web.Mvc.dll'? Sembra che il server stia utilizzando una versione precedente. – SLaks

+0

Ho provato - la stessa cosa – gisek

+0

Quale versione di .NET, ASP.NET e ASP.NET-MVC? –

risposta

2

Forse hanno qualche tipo di versione beta, non sono sicuro. Ma nello stack System.Web.LegacyAspNetSynchronizationContext ti suggeriamo di aggiungere la bandiera UseTaskFriendlySynchronizationContext al numero Web.config.

Controllare i seguenti passaggi: http://forums.asp.net/t/1778103.aspx/1

+0

Non ha aiutato :( – gisek

1

Ho avuto questo stesso problema esattamente, ho trovato il problema è stato quando ho avuto l'aggiornamento a .NET Framework 4.5 da 4.0, quando ho aggiornato MVC 3 non ha l'aggiornamento e non sarebbe gestire. NET 4.5. Ho scoperto che dovevo eseguire l'aggiornamento a MVC 4, ho trovato un pacchetto su NuGet chiamato Upgrade MVC 3 To MVC 4 di Nandip Makawana. Quando l'ho usato ha chiarito bene il problema ma ho ricevuto un altro errore. Con l'aggiornamento il mio file Web.config è stato modificato e ha dovuto essere riparato. che è stato facile e spiegato nell'errore lanciato.

<appSettings> 
<add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
<add key="webpages:Version" value="2.0.0.0" /> <---------- This line 
<add key="PreserveLoginUrl" value="true" /> 

la versione pagine web cambiato a 2 e aveva bisogno di tornare al 1

<add key="webpages:Version" value="1.0.0.0" /> 

Dopo questa modifica la mia domanda ha funzionato abbastanza bene. Spero che questo aiuti qualcuno, mi ci sono voluti 3 giorni per cercare una risposta da solo.

Problemi correlati