2011-12-14 4 views
5

のAzureのWebロール(MVC 3プロジェクト)を追加した後に起動しませマイクロソフトのAzure MVC 3 Webロールは文句を言わない「Twilioコントローラクラスで始まるTwilioControllerベースクラスの継承

  • 私はMSのAzureでホストされているMVC 3のアプリを持っています。 AzureのWebロールに公開します。問題はありません。
  • Nuget TwilioとTwilio.Mvcパッケージを追加しました。まだAzureのWebロールに公開されています - 問題はありません。
  • Mvc.TwilioController基底クラスから継承したクラスを追加しました。その後、Azure Webロールはもはや開始しません。
  • TwilioControllerクラスの継承を削除すると、Webロールが開始されます。

私のローカルVS Azureエミュレータ環境では、プロジェクトの公開、実行、およびtwilioの機能は問題ありません。

プロジェクトTwilio.api、Twilio.mvc、Twilio.Twiml、RestSharp、およびNewtonSoft.JsonはすべてCopyLocal = Trueに設定されています。

すべてのAzure診断ログ/トレースが有効で、5秒ごとにテーブルストレージに送信されますが、Webロールの開始に失敗した場合はログデータは使用できません。注:twilioControllerをコメントアウトすると、豊富なログデータが得られ、Azure Diagsが正しく設定されます。

ウェブの役割は引き続き/サイクル/アボートを中止するため、さらなるトラブルシューティングのためにVMにRDPする機会はありません。


次の2つのエラーは、毎分約失敗ウェブ役割のWindowsのシステムイベントログに書き込まれます。

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.


ステップ:

  1. Install Azure Sdk v 1.6
  2. Asp.netを選択してくださいAzureのテンプレートを使用して、新しいプロジェクト(Visual Studioの10 SP1)
  3. を作成します。 MVC 3 Webロール
  4. Azureのビルドと公開
  5. の成功 - Webロールが開始 - WebロールがNugetパッケージ "Twilio" バージョン3.3.2
  6. Nugetパッケージ "Twilio.Mvc" バージョン3.1.3
  7. ビルドを追加し、Azureの
  8. を公開成功を追加
  9. を開始
  10. 空のコントローラ(HelloController)を作成します。下記のコードスニペットを参照してください。
  11. TwilioControllerベースクラス(例えば、パブリック・クラスHelloController:TwilioController)を追加し、ビルド
  12. とAzureの
  13. 失敗を公開 - ウェブ役割がちょうどcyles// cylesが中止されます。 TwilioController(例:パブリック・クラスHelloController //:TwilioController)
  14. BuldとAzureの
  15. 成功への公開は - ウェブの役割は高く評価

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

任意のアイデアを開始します。

おかげで、 ジム

+0

WebロールでRDPが有効になっていますか?ログインしてログを確認できますか? http://msdn.microsoft.com/en-us/library/gg443832.aspx –

+0

RDPを有効にしましたが、接続できませんでした(Azure管理コンソールの「リモート」ボタンは、Webロールがサイクリングしている間アクティブではありません)。 – JimSTAT

+0

ELMAHのようなものを追加して例外をキャッチすると何かがログに記録されますか? –

答えて

4

ジム:

私はTwilioのために働く、とthe .NET helper libraryを所有しています。

どうしたのですか?Twilio.Mvcアセンブリは、System.Web.Mvcアセンブリの2.0バージョンを探しています。あなたのMVC 3プロジェクトにパッケージされていないからです。

かなり簡単な修正です。 Twilio.Mvcソースを取得し、新しいバージョンのMVCへの参照を変更し、アセンブリを再コンパイルします。私はサポートチームがあなた自身でそれをやりたくない場合は、あなたのために構築したバージョンであなたに連絡を取ると思います。

おそらく、アセンブリバインディングのリダイレクトを使用して、問題を解決する方法もあると思います。

Devin

+0

あなたは問題を解決しました!私はNuget Twilio.Mvcバージョン3.1.3を取り出し、Twilio.Mvcへの参照を追加しました。あなたがSystem.Web.Mvc 3.xを参照して問題を解決しました。うまくいけば、TwilioはMVC 3用のNuget Twilio.Mvcパッケージを作成します。私はTwilio/MVC 3/Azureプロジェクトを作成するための手順を解説しました。 – JimSTAT

2

はVS2010 UlitimateではIntelliTraceを使用してみてください。そのような依存関係の問題を捕捉でき、Intellitraceファイルをダウンロードして適切な例外を見つけることができます。

3

twilio + depsパックを追加してTwilioControllerからコントローラーを拡張する前に、WebDeployを早期に有効にしました。この方法では、VMはすでに作成されており、ロールはすでに開始されています。

  1. ウェブデプロイを有効にする、Azureの新しいMVC3の役割を公開 -
  2. の作品Twilio NuGetパックやWebデプロイを追加 - まだTwilioControllerとWeb展開から延びる
  3. に動作します -

初めて私は、ステップ3をしたウェブ展開は、エラーの原因となった:

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

私は今、このことを確認して再試行していますWebDeployで最後のステップを再現できます。すべてのTwilioを削除し、再度公開してwebdeployをリセットしています。約30分で回答が更新されます。

更新

[OK]を、これは奇妙です。私は上記のエラーを再現することができました。しかし、私はVisual Studioを終了し、再起動し、Webに展開することができました。 I now have a controller in an MVC3 web role on Azure that extends TwilioController。 < - これは一時的なものであり、削除されることに注意してください。

上記の手順を試してみて、WebDeployを使用せずにレプロを試すことをお勧めします。ただし、TwilioControllerを拡張するコントローラで展開する前に、Visual Studioを閉じて再起動してください。

それはまだ動作しない場合は、これを試してみてください。

  1. Azureのプロジェクトを右クリックして、パッケージを選択します。
  2. ポータルで[新しいステージングの展開]をクリックします。
  3. cscfgファイルとcspkgファイルを手動でナビゲートしてアップロードします。

最終的な答えは、私は、上記の手順を試みました。 Webデプロイメントを無効にすると、パッケージがVisual Studioから公開されているのか、ポータルから手動で公開されているのかは関係ありません。どちらも中止して再試行します。 TwilioControllerを展開するための唯一の方法はWebDeployを使用することでしたが、もちろんこれは受け入れられません。

Microsoftにサポートリクエストを提出することをお勧めします。しかし、あなたが言及したように依存関係には見えません。なぜなら、私はWeb上でTwilioのものを巡回することによってインスタンス上でコードを実行することができたからです。上記のCOMオブジェクトエラーと関係があります。

P.S.あなたは小さな計算インスタンスの8時間96セントを私に借りています。

+0

私はあなたのステップに従って、同じ結果を得ています - (twilioControlerは、事実の後にweb配備によって追加することができます)。これは進歩です - ありがとうございます。障害シナリオで気付いていることの1つは、Windowsシステムログに複数のWASエラーがあることです。質問にエラーを掲載します。今あなたのWebロールを削除することができます:) – JimSTAT

+0

上記のインスタンスURLが削除されました。がんばろう。 – danludwig

+0

この問題を回避していただきありがとうございます。あなたが発見したように私がWebdeployで公開した場合、事実の後にrdpすることができ、Webデプロイメントサービス/ポートをシャットダウンしてプロダクションに交換すると、今オプションがあることを意味します(賞金はあなたのものです)。MSまたはTwilioが根本的な問題を解決し、他の人がいなければanwserを提供するまで、質問を開いたままにしておきます。 – JimSTAT

2

この問題は、TwilioControllerがAzureで動作するようになっていることに気づいていますが、そのオプションを認識していない場合は、AppHarborでプロジェクトを実行することをお勧めします。 Twilioをうまく使っているAppHarborで実行されているアプリケーションがたくさんあることがわかっています(たとえばthis postを参照)。

(免責事項は、私がAppHarborの共同創設者だ)

+2

私はこれを解決することができない場合、私は真剣にそれを検討します。 – JimSTAT

関連する問題