Я создаю приложение 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, поскольку приложение даже не запускается, и в развертывании не будет отображаться сообщение об ошибке, просто «веб-приложение было опубликовано успешно», и при открытии веб-страницы я получаю «ошибку при запуске приложение."
Любая помощь или предложение оценены.
Здравствуйте. Thaks для предложений, хотя они не были действительно полезными (за исключением того, что я узнал новые вещи). Я решил эту проблему, перенеся часть функций библиотеки непосредственно в мои классы контроллеров, что не является подсказкой (двумерность кода), но эй, это работает ... Тем не менее я поражен, почему это не сработало, вызвав некоторые функции в библиотеке в порядке, вызов других приводит к сбою приложения до начала аппликации (я даже не смог отлаживать отладчик до первой строки кода контроллера, так как результаты были полностью мертвы). – Klemikaze