2016-10-04 4 views
0

Я создаю приложение Api, которое должно размещаться в Azure. Существует несколько контроллеров, все из которых наследуются от BaseController: Controller ... Базовый контроллер имеет один метод, который считывает заголовок авторизации, ищет базу данных и возвращает пользователя, если таковой имеется. После вызова API я хотел бы запустить запуск WebJob для выполнения какой-либо задачи ... Дело в том, что я не могу опубликовать приложение, потому что каждый раз, когда я «раскомментирую» метод для добавления сообщения в очередь для WebJob, приложение не делает только начать и показать: К сожалению. 500 Внутренняя ошибка сервера Произошла ошибка при запуске приложения.Приложение API не запускается после развертывания до Azure

Давайте перейдем к коду, надеюсь, что это будет более понятно после ...

[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 закомментирована. До сих пор приложение развертывает ОК, я могу перейти к API и получить правильные результаты, я могу добавить заголовок авторизации, экземпляр экземпляра ищет пользователя, и все работает нормально. Магия случается, когда я раскомментирую блок TRY/CATCH, поскольку приложение даже не запускается, и в развертывании не будет отображаться сообщение об ошибке, просто «веб-приложение было опубликовано успешно», и при открытии веб-страницы я получаю «ошибку при запуске приложение."

Любая помощь или предложение оценены.

ответ

1

Для этого сценария я предлагаю вам использовать удаленную отладку для устранения неполадок. Пожалуйста, обратитесь к this article за дополнительной информацией. Обратите внимание, что вам нужно установить режим развертывания в «Debug». Если это не поможет. Пожалуйста, также используйте diagnostics logging, чтобы узнать подробный вопрос.

+0

Здравствуйте. Thaks для предложений, хотя они не были действительно полезными (за исключением того, что я узнал новые вещи). Я решил эту проблему, перенеся часть функций библиотеки непосредственно в мои классы контроллеров, что не является подсказкой (двумерность кода), но эй, это работает ... Тем не менее я поражен, почему это не сработало, вызвав некоторые функции в библиотеке в порядке, вызов других приводит к сбою приложения до начала аппликации (я даже не смог отлаживать отладчик до первой строки кода контроллера, так как результаты были полностью мертвы). – Klemikaze

 Смежные вопросы

  • Нет связанных вопросов^_^