저는 Azure에서 호스팅해야하는 Api App을 구축 중입니다. 컨트롤러에는 BaseController에서 상속하는 컨트롤러가 몇 가지 있습니다. 컨트롤러 ... 기본 컨트롤러에는 인증 헤더를 읽고 데이터베이스를 검색하여 사용자가있는 경우 사용자를 반환하는 한 가지 방법이 있습니다. 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 블록을 주석 처리 할 때 발생합니다. 앱이 시작되지 않거나 배포시 오류 메시지가 표시되지 않고 "웹 앱이 성공적으로 게시되었습니다."웹 페이지를 여는 중 "시작하는 동안 오류가 발생합니다. 응용 프로그램. "
도움이나 제안을 주시면 감사하겠습니다.
안녕하세요. 제안을위한 탁신 (비록 내가 새로운 것을 배웠던 것을 제외하고는) 그들은 정말로 도움이되지 않았지만. 필자는 라이브러리 함수의 일부를 직접 컨트롤러 클래스 (코드 중복성)가 아닌 컨트롤러 클래스로 마이 그 레이션하여이 문제를 해결했지만 이봐, 작동 ... 여전히 작동하지 않는 이유는 놀랍습니다. 라이브러리의 함수는 응용 프로그램이 시작되기 전에 다른 사람에게 응용 프로그램 오류가 발생합니다 (procces가 모두 죽었 기 때문에 컨트롤러 코드의 첫 줄에 디버거를 붙일 수는 없었습니다). – Klemikaze