Резюме
Я пытаюсь устранить неполадки службы веб-приложений, созданной в Azure. Это веб-приложение .Net Core 3.0 Preview 3, в котором в качестве внешнего интерфейса используется React. Веб-приложение Azure было настроено с расширениями для .NET Core 3.0.
Проблема в том, что журналы (System.Diagnostics.Trace.TraceInformation / TraceError) не записываются.
Пример кода
В Startup.cs у меня есть следующее:
#define TRACE
///SOME USINGS...
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<ApplicationUser>()
.AddDefaultUI(UIFramework.Bootstrap4)
.AddEntityFrameworkStores<ApplicationDbContext>();
string certPath = Env.ContentRootPath + "/example.pfx";
X509Certificate2 cert=GetMyX509Certificate(certPath, "RunAzTech123"); //in case we want to get the cert from the registry
services.AddIdentityServer()
.AddApiAuthorization<ApplicationUser, ApplicationDbContext>()
.AddSigningCredential(cert);
services.AddAuthentication()
.AddIdentityServerJwt();
services.AddMvc()
.AddNewtonsoftJson();
// In production, the React files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/build";
});
}
private X509Certificate2 GetMyX509Certificate(string pfxFilePath, string password,X509KeyStorageFlags sFlags = X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.EphemeralKeySet)
{
try
{
System.Diagnostics.Trace.TraceInformation($"AZTECH!!! TRYING TO GET THE CERTIFICATE");
return new X509Certificate2(File.ReadAllBytes(pfxFilePath), password, sFlags);
}
catch (PlatformNotSupportedException ex)
{
System.Diagnostics.Trace.TraceError($"AZTECH!!! {ex.Message}");
if(sFlags.HasFlag(X509KeyStorageFlags.EphemeralKeySet))
{
return GetMyX509Certificate(pfxFilePath,password,X509KeyStorageFlags.MachineKeySet);
} else
{
return null;
}
}
catch (Exception ex)
{
System.Diagnostics.Trace.TraceError($"AZTECH!!! {ex.Message}");
return null;
}
}
Настройка Azure
Ведение журнала приложений включено:
В настоящее время этот способ не настроен, но я также пробовал это с хранилищем BLOB-объектов Журналы не были записаны.
Я попытался выполнить потоковую передачу журналов (Log Stream), загрузить журналы (Terminal -> az logapp download загрузить --resource-group [groupName] --name [appName]) и использовать Kudu (https://[appName].scm.azurewebsites.net). Но журналы не появляются, и Куду говорит, что приложение остановлено:
У меня нет предела счетов, приложение запущено, и я не уверен, как бы я соответствовал квоте ресурса, так как приложение было создано сегодня.
Решенные решения
Используемые ресурсы