2011-12-14 7 views
5

Azure ruolo web (MVC 3 del progetto) wont' iniziare con Twilio classe controllerMicrosoft Azure MVC 3 ruolo Web non partire dopo l'aggiunta di TwilioController classe base eredità

  • Ho un app MVC 3 che è ospitato su MS Azure . Pubblica nel ruolo Web di Azure - Nessun problema.
  • Ho aggiunto i pacchetti Nuget Twilio e Twilio.Mvc. È ancora pubblicato nel ruolo Web di Azure - Nessun problema.
  • Ho aggiunto una classe che eredita dalla classe base Mvc.TwilioController e successivamente il ruolo Web di Azure non viene più avviato.
  • Se rimuovo l'ereditarietà della classe TwilioController, viene avviato il ruolo Web.

I progetti vengono pubblicati, eseguiti e twilio funziona correttamente nel mio ambiente di emulazione VS Azure locale.

I riferimenti del progetto; Twilio.api, Twilio.mvc, Twilio.Twiml, RestSharp e NewtonSoft.Json sono tutti impostati su CopyLocal = True.

Tutta la registrazione/traccia di diagnostica di Azure è abilitata e invia alla memoria della tabella ogni 5 secondi ma non sono disponibili dati di registro quando il ruolo Web non viene avviato. Nota: se commento il twilioController ottengo un'abbondanza di dati di registro in modo che Azure Diags sia configurato correttamente.

Poiché il ruolo Web continua ad interrompere/riavviare/interrompere/abortire, non vi è alcuna possibilità di RDP per il vm per ulteriore risoluzione dei problemi.


I due errori seguenti vengono scritti registro eventi di sistema di Windows la mancanza del ruolo di web circa ogni minuto:

The application '/' belonging to site '1273337584' has an invalid AppPoolId 'ca5c9ecb-e68d-4f3a-84c2-c0b4430373e9' set. Therefore, the application will be ignored.

.

Site 1273337584 was disabled because the root application defined for the site is invalid. See the previous event log message for information about why the root application is invalid.


Passaggi per riprodurre (passaggi esatti):

  1. Install Azure Sdk v 1.6
  2. Creare un nuovo progetto utilizzando il modello Azure (Visual Studio 10 SP1)
  3. Scegliere l'Asp.net Ruolo web MVC 3
  4. Creazione e pubblicazione in Azure
  5. Successo - Web Role inizia
  6. Aggiungi Nuget Pacchetto "Twilio" versione 3.3.2
  7. Aggiungi Nuget Pacchetto "Twilio.Mvc" versione 3.1.3
  8. creare e pubblicare Per Azure
  9. Successo - inizia Web Role
  10. Creare un controller vuoto (HelloController). Vedi sotto lo snippet di codice.
  11. Aggiungi TwilioController classe di base (ad esempio Public Class HelloController: TwilioController)
  12. creare e pubblicare Azure
  13. Fail - il ruolo web appena cyles/Interruzione/cyles.
  14. Commenta TwilioController (ad es.Classe pubblica HelloController //: TwilioController)
  15. Buld e Pubblica Azure
  16. Successo - ruolo web inizia

    using System.Web.Mvc; 
    using Twilio.TwiML.Mvc; 
        namespace WindowsAzureProject857481.Controllers 
        { 
         public class HelloController : TwilioController 
         { 
          // 
          // GET: /Hello/ 
    
          public ActionResult Index() 
          { 
           return View(); 
          } 
    

Tutte le idee apprezzate.

Grazie, Jim

+0

RDP è abilitato nel ruolo Web? Puoi accedere e controllare i log? http://msdn.microsoft.com/en-us/library/gg443832.aspx –

+0

Abilitato RDP ma non è stato possibile connettersi (il pulsante "Remoto" in Azure Management Console non è mai attivo mentre il ruolo Web è in corso. – JimSTAT

+0

Se si aggiunge qualcosa come ELMAH per catturare le eccezioni, qualcosa viene registrato? –

risposta

4

Jim:

io lavoro per Twilio, e possiedo the .NET helper library.

Che cosa sta succedendo è che l'assembly Twilio.Mvc è alla ricerca di 2.0 versione l'assembly System.Web.Mvc, dal momento che è quello contro cui è costruito. Non è stato trovato perché ovviamente non è stato confezionato con il tuo progetto MVC 3.

La correzione è abbastanza semplice. Ottenere l'origine Twilio.Mvc, modificare il riferimento alla versione più recente di MVC e ricompilare l'assembly. Credo che il nostro team di supporto ti contatterà con una versione che ho creato per te se non vuoi farlo tu stesso.

Penso che ci sia probabilmente anche un modo per utilizzare i reindirizzamenti dell'associazione all'assemblaggio per risolvere il problema, se si volesse provarlo.

Devin

+0

Hai risolto il problema! Ho estratto la versione 3.1.3 di Nuget Twilio.Mvc e aggiunto un riferimento a Twilio.Mvc che mi hai fornito che fa riferimento a System.Web.Mvc 3.x e al problema risolto. Speriamo che Twilio creerà un pacchetto Nuget Twilio.Mvc per MVC 3. Ho modificato la risposta con i passaggi per la creazione di un progetto Twilio/MVC 3/Azure. – JimSTAT

2

Prova utilizzando Intellitrace in VS2010 Ulitimate. Questo può catturare tali problemi di dipendenza, permettendoti di scaricare i file Intellitrace e trovare le eccezioni appropriate.

3

ho passato i tuoi passi repro, solo che ho cambiato una cosa - ho attivato WebDeploy per il ruolo in anticipo, prima di aggiungere i Twilio + deps pacchi e che si estende da un controller TwilioController. In questo modo, la VM era già stata creata e il ruolo era già iniziato.

  1. Pubblicare nuovo ruolo MVC3 Azure, consentendo Web Deploy - Lavori
  2. Add Pack Twilio Nuget e distribuzione Web - funziona ancora
  3. estendono da TwilioController e Web Deploy -

La prima volta ho fatto il passaggio 3, web Deploy ha causato un errore:

COM object has been separated from its underlying RCW cannot be used 

sono ora di riprovare per assicurarsi che questo l'ultimo passo è riproducibile con WebDeploy. Ho rimosso tutto Twilio e sto pubblicando di nuovo per ripristinare webdeploy. Aggiornerà la risposta in circa 30 minuti.

Aggiornamento

Ok, questo è strano. Sono stato in grado di riprodurre l'errore sopra. Tuttavia, ho chiuso Visual Studio, riavviato e sono stato quindi in grado di distribuire il web. I now have a controller in an MVC3 web role on Azure that extends TwilioController. < - nota che questo è temporaneo e verrà rimosso.

Ti suggerisco di provare i passaggi precedenti e persino di provare la tua riproduzione senza utilizzare WebDeploy. Tuttavia, prima di implementare con un controller che estende TwilioController, chiudere e riavviare Visual Studio.

Se questo ancora non funziona, provate questo:

  1. destro del mouse progetto Azure e scegliere Package.
  2. Passare al portale e fare clic su Nuova distribuzione di gestione temporanea.
  3. Passare e caricare manualmente i file cscfg e cspkg.

risposta definitiva

Ho provato i passaggi precedenti. Quando si disabilita la distribuzione Web, sembra non importare se il pacchetto è pubblicato da Visual Studio o manualmente dal portale. Entrambi continuano ad abortire e a riprovare. L'unico modo per far distribuire TwilioController era utilizzare WebDeploy, ma ovviamente non è accettabile.

Suggerisco di inviare una richiesta di supporto con Microsoft. Non sembra essere una dipendenza come hai detto, dato che sono stato in grado di eseguire il codice su un'istanza passando di nascosto nella roba di Twilio sulla distribuzione web. Potrebbe avere qualcosa a che fare con l'errore dell'oggetto COM menzionato sopra.

P.S. - Mi devi 96 cent per 8 ore di una piccola istanza di calcolo.

+0

Ho seguito i tuoi passi e ottenendo gli stessi risultati - (il twilioControler può essere aggiunto via web deploy dopo il fatto). Questo è un progresso, grazie. Una cosa che sto notando sullo scenario di errore sono molteplici errori WAS nel registro di sistema di Windows. Pubblicherò gli errori nella domanda. Puoi cancellare il tuo ruolo web ora :) – JimSTAT

+0

L'URL dell'istanza usato sopra è stato cancellato. In bocca al lupo. – danludwig

+0

Grazie per la soluzione. Se pubblico su Azure con webdeploy come hai scoperto, posso rdpare dopo il fatto e chiudere il servizio/porta di distribuzione del web quando lo scambio in produzione, il che significa che ora ho delle opzioni (grazie, quindi la taglia è tua).Tuttavia, lascerò aperta la domanda fino a quando MS o Twilio non risolveranno il problema sottostante e forniranno una risposta se nessuno lo fa. – JimSTAT

2

Mi rendo conto che questa domanda riguarda il funzionamento di TwilioController in Azure, ma nel caso in cui non si fosse a conoscenza di tale opzione, volevo suggerire di eseguire il progetto su AppHarbor. Conosco molte applicazioni in esecuzione su AppHarbor che utilizzano correttamente Twilio (vedere this post per esempio).

(dichiarazione di non responsabilità, sto co-fondatore di AppHarbor)

+2

Se non riesco a risolvere il problema, lo prenderò seriamente in considerazione. – JimSTAT