2016-10-04 8 views
0

AzureでホストされるApi Appをビルドしています。コントローラにはいくつかのコントローラがあり、それらはすべてBaseController:Controllerから継承しています。コントローラには、認証ヘッダーを読み取り、データベースを検索し、ユーザーがあればユーザーを返すメソッドが1つあります。 APIを呼び出した後、私はいくつかのタスクを実行するWebJobを開始したいと思います...ポイントは、WebJobのキューにメッセージを追加するためのメソッドを "コメントを解除"するたびに、アプリケーションは公開しません。開始時にのみ表示されます: 500内部サーバーエラー アプリケーションの起動中にエラーが発生しました。Azureへの展開後にAPIアプリが起動しない

[Route("api/[controller]")] 
public class SendController : BaseController 
{ 
    public override OperationResult Get(Guid activityId) 
    { 
     var user = ValidateAndGetUser(); 
     if (user == null) 
     { 
      connector.Log(null, activityId, Log.ActionType.Send, Log.SeverityLevel.Error, null, "User is null"); 
      return new OperationResult 
      { 
       CampaignId = activityId, 
       IsSuceeded = false, 
       Type = OperationType.LoginFailed 
      }; 
     } 

     if (activityId == Guid.Empty) 
     { 
      connector.Log(user.UserName, null, Log.ActionType.Send, Log.SeverityLevel.Error, null, "Activity ID is null"); 
      return new OperationResult 
      { 
       UserName = user.UserName, 
       IsSuceeded = false, 
       Type = OperationType.RequestRejected 
      }; 
     } 
===commented section 
     /*try 
     { 
      connector.AddMessage(activityId, user, Log.ActionType.Send); 

      return new OperationResult 
      { 
       CampaignId = activityId, 
       //UserName = user.UserName, 
       UserName = user.UserName, 
       TextMessage = "Request processed.", 
       IsSuceeded = true, 
       Type = OperationType.RequestAccepted 
      }; 
     } 
     catch (Exception e) 
     { 
      connector.Log(user.UserName, activityId, Log.ActionType.Send, Log.SeverityLevel.Error, e, "Add message failed."); 
      return new OperationResult 
      { 
       CampaignId = activityId, 
       UserName = user.UserName, 
       TextMessage = "Add message failed.", 
       IsSuceeded = false, 
       Type = OperationType.RequestFailed 
      }; 
     }*/ 
===end commented section 

===remove while above code is uncommented 
     return new OperationResult 
     { 
      CampaignId = activityId, 
      UserName = user.UserName, 
      TextMessage = "Add message failed.", 
      IsSuceeded = false, 
      Type = OperationType.RequestFailed 
     }; 
===end remove 
    } 
} 

...それはその後、より明確になることを願っ、のは、コードを取得してみましょうあなたが見ることができるように、TRY/CATCHがコメントアウトされています。これまでのところ、アプリケーションはOKをデプロイし、APIにナビゲートして正しい結果を得ることができます。認証ヘッダーを追加できます。コネクタインスタンスはユーザーを検索し、すべて正常に動作します。私がTRY/CATCHブロックのコメントを外すと、アプリケーションが開始されず、デプロイメントにもエラーメッセージが表示されず、単に「Web Appが正常に公開されました」と表示されます。アプリケーション。

ありがとうございました。

答えて

1

このシナリオでは、リモートデバッグを使用して問題をトラブルシューティングすることをお勧めします。詳細については、this articleを参照してください。デプロイモードを「デバッグ」に設定する必要があることに注意してください。それが助けにならないなら。詳細な問題については、diagnostics loggingもご利用ください。

+0

こんにちは。私が新しいことを学んだことを除いて、彼らは本当に役に立たなかったけれども、提案のためのタックス。私はこの問題を、ライブラリ関数の一部を直接コントローラクラスにマイグレーションすることで解決しましたが、これはプロップ解法(コードの二重性)ではありませんが、ちょっと、うまくいきます... まだそれはうまくいかず、ライブラリ内の関数は正常です。アプリケーションを呼び出す前に他のアプリケーションを呼び出すとアプリケーションが失敗します(私はコントローラコードの最初の行にデバッガをアタッチできませんでした。 – Klemikaze

関連する問題