2013-07-18 9 views
6

Mam kontroler„System.Threading.Tasks.Task`1 [System.Web.Mvc.ActionResult]” wyświetlany zamiast widoku

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

To działa dobrze na moim localhost (przekierowuje do żądanej strony po wysłaniu e-maila). wydałem moją stronę do smarterasp.net

A teraz to pokazuje ciąg zamiast przekierowania:

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

Co jest przyczyną i jak to naprawić?

Elmah niczego nie rejestrowała. E-mail został faktycznie wysłany.

Próbowałem dodawać biblioteki DLL MVC. Wszystkie poniższe pliki znajdują się obok mojej biblioteki internetowej.

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

edit

Host Administrator wysłał mi log z programu 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

Czy opublikowałeś 'System.Web.Mvc.dll'? Wygląda na to, że serwer używa starszej wersji. – SLaks

+0

Próbowałem - to samo – gisek

+0

Która wersja .NET, ASP.NET i ASP.NET-MVC? –

Odpowiedz

2

Może mają jakąś wersji beta, nie jestem pewien. Ale System.Web.LegacyAspNetSynchronizationContext w stosie sugeruje, że musisz dodać flagę UseTaskFriendlySynchronizationContext do swojego Web.config.

Sprawdź: http://forums.asp.net/t/1778103.aspx/1

+0

To nie pomogło :( – gisek

1

miałem dokładnie ten sam problem, znalazłem problem był, kiedy przenieśli się do .NET framework 4.5 od 4,0, kiedy zmodernizowane MVC 3 nie uaktualnić i nie poradzić. NET 4.5. Odkryłem, że muszę uaktualnić do MVC 4, znalazłem pakiet na NuGet o nazwie Upgrade MVC 3 To MVC 4 autorstwa Nandip Makawana. Kiedy użyłem tego rozwiązania, ładnie to wyjaśniłem, ale dostałem kolejny błąd. Po aktualizacji mój plik Web.config został zmieniony i musiał zostać naprawiony. co było łatwe i wyjaśnione w zgłoszonym błędzie.

<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" /> 

wersja strony internetowe zmieniona na 2 i musiał wrócić do 1

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

Po tej zmianie moja aplikacja działa bardzo ładnie. Mam nadzieję, że to pomoże komuś, zajęło mi 3 dni szukanie odpowiedzi samemu.

Powiązane problemy