init
This commit is contained in:
58
.bicep/main.bicep
Normal file
58
.bicep/main.bicep
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
targetScope = 'subscription'
|
||||||
|
|
||||||
|
@description('The name of the resource group')
|
||||||
|
param resourceGroupName string = 'rg-blazor-grafana'
|
||||||
|
|
||||||
|
@description('The location for all resources')
|
||||||
|
param location string = 'eastus'
|
||||||
|
|
||||||
|
@description('The name of the App Service Plan')
|
||||||
|
param appServicePlanName string = 'asp-blazor-app'
|
||||||
|
|
||||||
|
@description('The name of the Web App')
|
||||||
|
param webAppName string = 'webapp-blazor-${uniqueString(resourceGroupName)}'
|
||||||
|
|
||||||
|
@description('The name of the Application Insights instance')
|
||||||
|
param appInsightsName string = 'ai-blazor-app'
|
||||||
|
|
||||||
|
@description('The name of the Log Analytics Workspace')
|
||||||
|
param logAnalyticsWorkspaceName string = 'law-blazor-app'
|
||||||
|
|
||||||
|
// Create the resource group
|
||||||
|
resource resourceGroup 'Microsoft.Resources/resourceGroups@2021-04-01' = {
|
||||||
|
name: resourceGroupName
|
||||||
|
location: location
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deploy the logging and monitoring infrastructure
|
||||||
|
module monitoring 'modules/monitoring.bicep' = {
|
||||||
|
scope: resourceGroup
|
||||||
|
name: 'monitoring-deployment'
|
||||||
|
params: {
|
||||||
|
location: location
|
||||||
|
appInsightsName: appInsightsName
|
||||||
|
logAnalyticsWorkspaceName: logAnalyticsWorkspaceName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deploy the App Service infrastructure
|
||||||
|
module appService 'modules/appService.bicep' = {
|
||||||
|
scope: resourceGroup
|
||||||
|
name: 'appservice-deployment'
|
||||||
|
params: {
|
||||||
|
location: location
|
||||||
|
appServicePlanName: appServicePlanName
|
||||||
|
webAppName: webAppName
|
||||||
|
appInsightsInstrumentationKey: monitoring.outputs.instrumentationKey
|
||||||
|
appInsightsConnectionString: monitoring.outputs.connectionString
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Outputs
|
||||||
|
output resourceGroupName string = resourceGroup.name
|
||||||
|
output webAppName string = appService.outputs.webAppName
|
||||||
|
output webAppUrl string = appService.outputs.webAppUrl
|
||||||
|
output appInsightsName string = monitoring.outputs.appInsightsName
|
||||||
|
output logAnalyticsWorkspaceId string = monitoring.outputs.workspaceId
|
||||||
|
output grafanaName string = monitoring.outputs.grafanaName
|
||||||
|
output grafanaEndpoint string = monitoring.outputs.grafanaEndpoint
|
||||||
124
.bicep/modules/appService.bicep
Normal file
124
.bicep/modules/appService.bicep
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
@description('The location for all resources')
|
||||||
|
param location string
|
||||||
|
|
||||||
|
@description('The name of the App Service Plan')
|
||||||
|
param appServicePlanName string
|
||||||
|
|
||||||
|
@description('The name of the Web App')
|
||||||
|
param webAppName string
|
||||||
|
|
||||||
|
@description('Application Insights Instrumentation Key')
|
||||||
|
param appInsightsInstrumentationKey string
|
||||||
|
|
||||||
|
@description('Application Insights Connection String')
|
||||||
|
param appInsightsConnectionString string
|
||||||
|
|
||||||
|
// Create App Service Plan
|
||||||
|
resource appServicePlan 'Microsoft.Web/serverfarms@2022-09-01' = {
|
||||||
|
name: appServicePlanName
|
||||||
|
location: location
|
||||||
|
sku: {
|
||||||
|
name: 'B1'
|
||||||
|
tier: 'Basic'
|
||||||
|
size: 'B1'
|
||||||
|
family: 'B'
|
||||||
|
capacity: 1
|
||||||
|
}
|
||||||
|
kind: 'linux'
|
||||||
|
properties: {
|
||||||
|
reserved: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create Web App
|
||||||
|
resource webApp 'Microsoft.Web/sites@2022-09-01' = {
|
||||||
|
name: webAppName
|
||||||
|
location: location
|
||||||
|
kind: 'app,linux'
|
||||||
|
properties: {
|
||||||
|
serverFarmId: appServicePlan.id
|
||||||
|
httpsOnly: true
|
||||||
|
siteConfig: {
|
||||||
|
linuxFxVersion: 'DOTNETCORE|8.0'
|
||||||
|
alwaysOn: true
|
||||||
|
minTlsVersion: '1.2'
|
||||||
|
ftpsState: 'Disabled'
|
||||||
|
http20Enabled: true
|
||||||
|
appSettings: [
|
||||||
|
{
|
||||||
|
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
|
||||||
|
value: appInsightsConnectionString
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'ApplicationInsightsAgent_EXTENSION_VERSION'
|
||||||
|
value: '~3'
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'XDT_MicrosoftApplicationInsights_Mode'
|
||||||
|
value: 'recommended'
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
|
||||||
|
value: appInsightsInstrumentationKey
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'ASPNETCORE_ENVIRONMENT'
|
||||||
|
value: 'Production'
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'OTEL_SDK_DISABLED'
|
||||||
|
value: 'false'
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'OTEL_TRACES_SAMPLER'
|
||||||
|
value: 'always_on'
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'OTEL_METRICS_EXPORTER'
|
||||||
|
value: 'otlp'
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'OTEL_EXPORTER_OTLP_ENDPOINT'
|
||||||
|
value: 'http://localhost:4317'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
metadata: [
|
||||||
|
{
|
||||||
|
name: 'CURRENT_STACK'
|
||||||
|
value: 'dotnet'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable detailed error messages and logging
|
||||||
|
resource webAppLogs 'Microsoft.Web/sites/config@2022-09-01' = {
|
||||||
|
parent: webApp
|
||||||
|
name: 'logs'
|
||||||
|
properties: {
|
||||||
|
applicationLogs: {
|
||||||
|
fileSystem: {
|
||||||
|
level: 'Information'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
httpLogs: {
|
||||||
|
fileSystem: {
|
||||||
|
retentionInMb: 35
|
||||||
|
retentionInDays: 7
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
failedRequestsTracing: {
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
detailedErrorMessages: {
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Outputs
|
||||||
|
output webAppName string = webApp.name
|
||||||
|
output webAppUrl string = 'https://${webApp.properties.defaultHostName}'
|
||||||
|
output webAppId string = webApp.id
|
||||||
108
.bicep/modules/appService2.bicep
Normal file
108
.bicep/modules/appService2.bicep
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
@description('The location for all resources')
|
||||||
|
param location string
|
||||||
|
|
||||||
|
@description('The name of the App Service Plan')
|
||||||
|
param appServicePlanName string
|
||||||
|
|
||||||
|
@description('The name of the Web App')
|
||||||
|
param webAppName string
|
||||||
|
|
||||||
|
@description('Application Insights Instrumentation Key')
|
||||||
|
param appInsightsInstrumentationKey string
|
||||||
|
|
||||||
|
@description('Application Insights Connection String')
|
||||||
|
param appInsightsConnectionString string
|
||||||
|
|
||||||
|
// Create App Service Plan
|
||||||
|
resource appServicePlan 'Microsoft.Web/serverfarms@2022-09-01' = {
|
||||||
|
name: appServicePlanName
|
||||||
|
location: location
|
||||||
|
sku: {
|
||||||
|
name: 'B1'
|
||||||
|
tier: 'Basic'
|
||||||
|
size: 'B1'
|
||||||
|
family: 'B'
|
||||||
|
capacity: 1
|
||||||
|
}
|
||||||
|
kind: 'linux'
|
||||||
|
properties: {
|
||||||
|
reserved: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create Web App
|
||||||
|
resource webApp 'Microsoft.Web/sites@2022-09-01' = {
|
||||||
|
name: webAppName
|
||||||
|
location: location
|
||||||
|
kind: 'app,linux'
|
||||||
|
properties: {
|
||||||
|
serverFarmId: appServicePlan.id
|
||||||
|
httpsOnly: true
|
||||||
|
siteConfig: {
|
||||||
|
linuxFxVersion: 'DOTNETCORE|8.0'
|
||||||
|
alwaysOn: true
|
||||||
|
minTlsVersion: '1.2'
|
||||||
|
ftpsState: 'Disabled'
|
||||||
|
http20Enabled: true
|
||||||
|
appSettings: [
|
||||||
|
{
|
||||||
|
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
|
||||||
|
value: appInsightsConnectionString
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'ApplicationInsightsAgent_EXTENSION_VERSION'
|
||||||
|
value: '~3'
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'XDT_MicrosoftApplicationInsights_Mode'
|
||||||
|
value: 'recommended'
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
|
||||||
|
value: appInsightsInstrumentationKey
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: 'ASPNETCORE_ENVIRONMENT'
|
||||||
|
value: 'Production'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
metadata: [
|
||||||
|
{
|
||||||
|
name: 'CURRENT_STACK'
|
||||||
|
value: 'dotnet'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable detailed error messages and logging
|
||||||
|
resource webAppLogs 'Microsoft.Web/sites/config@2022-09-01' = {
|
||||||
|
parent: webApp
|
||||||
|
name: 'logs'
|
||||||
|
properties: {
|
||||||
|
applicationLogs: {
|
||||||
|
fileSystem: {
|
||||||
|
level: 'Information'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
httpLogs: {
|
||||||
|
fileSystem: {
|
||||||
|
retentionInMb: 35
|
||||||
|
retentionInDays: 7
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
failedRequestsTracing: {
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
detailedErrorMessages: {
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Outputs
|
||||||
|
output webAppName string = webApp.name
|
||||||
|
output webAppUrl string = 'https://${webApp.properties.defaultHostName}'
|
||||||
|
output webAppId string = webApp.id
|
||||||
100
.bicep/modules/monitoring.bicep
Normal file
100
.bicep/modules/monitoring.bicep
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
@description('The location for all resources')
|
||||||
|
param location string
|
||||||
|
|
||||||
|
@description('The name of the Application Insights instance')
|
||||||
|
param appInsightsName string
|
||||||
|
|
||||||
|
@description('The name of the Log Analytics Workspace')
|
||||||
|
param logAnalyticsWorkspaceName string
|
||||||
|
|
||||||
|
@description('The name of the Grafana instance')
|
||||||
|
param grafanaName string = 'grafana-${uniqueString(resourceGroupId())}'
|
||||||
|
|
||||||
|
// Create Log Analytics Workspace
|
||||||
|
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
|
||||||
|
name: logAnalyticsWorkspaceName
|
||||||
|
location: location
|
||||||
|
properties: {
|
||||||
|
sku: {
|
||||||
|
name: 'PerGB2018'
|
||||||
|
}
|
||||||
|
retentionInDays: 30
|
||||||
|
features: {
|
||||||
|
enableLogAccessUsingOnlyResourcePermissions: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create Application Insights
|
||||||
|
resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
|
||||||
|
name: appInsightsName
|
||||||
|
location: location
|
||||||
|
kind: 'web'
|
||||||
|
properties: {
|
||||||
|
Application_Type: 'web'
|
||||||
|
WorkspaceResourceId: logAnalyticsWorkspace.id
|
||||||
|
IngestionMode: 'LogAnalytics'
|
||||||
|
publicNetworkAccessForIngestion: 'Enabled'
|
||||||
|
publicNetworkAccessForQuery: 'Enabled'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create Grafana Instance - Standard SKU (lowest cost managed option)
|
||||||
|
resource grafana 'Microsoft.Dashboard/grafana@2023-09-01' = {
|
||||||
|
name: grafanaName
|
||||||
|
location: location
|
||||||
|
sku: {
|
||||||
|
name: 'Standard'
|
||||||
|
}
|
||||||
|
identity: {
|
||||||
|
type: 'SystemAssigned'
|
||||||
|
}
|
||||||
|
properties: {
|
||||||
|
apiKey: 'Enabled'
|
||||||
|
autoLogoutMinutes: 0
|
||||||
|
azureMonitorWorkspaceIntegrations: [
|
||||||
|
{
|
||||||
|
azureMonitorWorkspaceResourceId: logAnalyticsWorkspace.id
|
||||||
|
}
|
||||||
|
]
|
||||||
|
grafanaIntegrations: {
|
||||||
|
azureMonitorWorkspaceIntegrations: [
|
||||||
|
{
|
||||||
|
azureMonitorWorkspaceResourceId: logAnalyticsWorkspace.id
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assign Monitoring Data Reader role to Grafana for Log Analytics Workspace
|
||||||
|
resource grafanaLogAnalyticsRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
|
||||||
|
scope: logAnalyticsWorkspace
|
||||||
|
name: guid(logAnalyticsWorkspace.id, grafana.id, 'b24988ac-6180-42a0-ab88-20f7382dd24c')
|
||||||
|
properties: {
|
||||||
|
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
|
||||||
|
principalId: grafana.identity.principalId
|
||||||
|
principalType: 'ServicePrincipal'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assign Monitoring Data Reader role to Grafana for Application Insights
|
||||||
|
resource grafanaAppInsightsRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
|
||||||
|
scope: applicationInsights
|
||||||
|
name: guid(applicationInsights.id, grafana.id, 'b24988ac-6180-42a0-ab88-20f7382dd24c')
|
||||||
|
properties: {
|
||||||
|
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
|
||||||
|
principalId: grafana.identity.principalId
|
||||||
|
principalType: 'ServicePrincipal'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Outputs
|
||||||
|
output appInsightsName string = applicationInsights.name
|
||||||
|
output instrumentationKey string = applicationInsights.properties.InstrumentationKey
|
||||||
|
output connectionString string = applicationInsights.properties.ConnectionString
|
||||||
|
output workspaceId string = logAnalyticsWorkspace.id
|
||||||
|
output workspaceName string = logAnalyticsWorkspace.name
|
||||||
|
output grafanaName string = grafana.name
|
||||||
|
output grafanaId string = grafana.id
|
||||||
|
output grafanaEndpoint string = grafana.properties.endpoint
|
||||||
44
.bicep/modules/monitoring2.bicep
Normal file
44
.bicep/modules/monitoring2.bicep
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
@description('The location for all resources')
|
||||||
|
param location string
|
||||||
|
|
||||||
|
@description('The name of the Application Insights instance')
|
||||||
|
param appInsightsName string
|
||||||
|
|
||||||
|
@description('The name of the Log Analytics Workspace')
|
||||||
|
param logAnalyticsWorkspaceName string
|
||||||
|
|
||||||
|
// Create Log Analytics Workspace
|
||||||
|
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
|
||||||
|
name: logAnalyticsWorkspaceName
|
||||||
|
location: location
|
||||||
|
properties: {
|
||||||
|
sku: {
|
||||||
|
name: 'PerGB2018'
|
||||||
|
}
|
||||||
|
retentionInDays: 30
|
||||||
|
features: {
|
||||||
|
enableLogAccessUsingOnlyResourcePermissions: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create Application Insights
|
||||||
|
resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
|
||||||
|
name: appInsightsName
|
||||||
|
location: location
|
||||||
|
kind: 'web'
|
||||||
|
properties: {
|
||||||
|
Application_Type: 'web'
|
||||||
|
WorkspaceResourceId: logAnalyticsWorkspace.id
|
||||||
|
IngestionMode: 'LogAnalytics'
|
||||||
|
publicNetworkAccessForIngestion: 'Enabled'
|
||||||
|
publicNetworkAccessForQuery: 'Enabled'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Outputs
|
||||||
|
output appInsightsName string = applicationInsights.name
|
||||||
|
output instrumentationKey string = applicationInsights.properties.InstrumentationKey
|
||||||
|
output connectionString string = applicationInsights.properties.ConnectionString
|
||||||
|
output workspaceId string = logAnalyticsWorkspace.id
|
||||||
|
output workspaceName string = logAnalyticsWorkspace.name
|
||||||
19
GrafanaBlazor/BlazorApp/App.razor
Normal file
19
GrafanaBlazor/BlazorApp/App.razor
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<base href="/" />
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<link rel="stylesheet" href="css/app.css" />
|
||||||
|
<link rel="icon" type="image/png" href="favicon.png" />
|
||||||
|
<HeadOutlet />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<Routes />
|
||||||
|
<script src="_framework/blazor.web.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
24
GrafanaBlazor/BlazorApp/BlazorApp.csproj
Normal file
24
GrafanaBlazor/BlazorApp/BlazorApp.csproj
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.22.0" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.ApplicationInsights" Version="2.22.0" />
|
||||||
|
<PackageReference Include="Serilog.AspNetCore" Version="8.0.1" />
|
||||||
|
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
|
||||||
|
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
|
||||||
|
<PackageReference Include="Serilog.Settings.Configuration" Version="8.0.0" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.7.0" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.7.0" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.7.0" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.7.1" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.7.1" />
|
||||||
|
<PackageReference Include="prometheus-net.AspNetCore" Version="8.2.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
23
GrafanaBlazor/BlazorApp/Components/Layout/MainLayout.razor
Normal file
23
GrafanaBlazor/BlazorApp/Components/Layout/MainLayout.razor
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
@inherits LayoutComponentBase
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<div class="sidebar">
|
||||||
|
<NavMenu />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<div class="top-row px-4">
|
||||||
|
<a href="https://learn.microsoft.com/aspnet/core/" target="_blank">About</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<article class="content px-4">
|
||||||
|
@Body
|
||||||
|
</article>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="blazor-error-ui">
|
||||||
|
An unhandled error has occurred.
|
||||||
|
<a href="" class="reload">Reload</a>
|
||||||
|
<a class="dismiss">🗙</a>
|
||||||
|
</div>
|
||||||
21
GrafanaBlazor/BlazorApp/Components/Layout/NavMenu.razor
Normal file
21
GrafanaBlazor/BlazorApp/Components/Layout/NavMenu.razor
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()">
|
||||||
|
<nav class="flex-column">
|
||||||
|
<div class="nav-item px-3">
|
||||||
|
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
|
||||||
|
<span class="bi bi-house-door-fill-nav-menu" aria-hidden="true"></span> Home
|
||||||
|
</NavLink>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav-item px-3">
|
||||||
|
<NavLink class="nav-link" href="metrics">
|
||||||
|
<span class="bi bi-graph-up-arrow" aria-hidden="true"></span> Metrics
|
||||||
|
</NavLink>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav-item px-3">
|
||||||
|
<NavLink class="nav-link" href="logs">
|
||||||
|
<span class="bi bi-journal-text" aria-hidden="true"></span> Logs Demo
|
||||||
|
</NavLink>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
42
GrafanaBlazor/BlazorApp/Components/Pages/Home.razor
Normal file
42
GrafanaBlazor/BlazorApp/Components/Pages/Home.razor
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
@page "/"
|
||||||
|
@inject ILogger<Home> Logger
|
||||||
|
|
||||||
|
<PageTitle>Home</PageTitle>
|
||||||
|
|
||||||
|
<h1>Blazor Server App - Grafana Observability Demo</h1>
|
||||||
|
|
||||||
|
<p>Welcome! This application is configured with:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><strong>Serilog</strong> - Structured logging</li>
|
||||||
|
<li><strong>Application Insights</strong> - Azure native monitoring</li>
|
||||||
|
<li><strong>OpenTelemetry</strong> - Distributed tracing</li>
|
||||||
|
<li><strong>Prometheus</strong> - Metrics endpoint at <code>/metrics</code></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Available Endpoints</h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><code>/health</code> - Health check endpoint</li>
|
||||||
|
<li><code>/metrics</code> - Prometheus metrics</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="alert alert-info mt-4">
|
||||||
|
<h4>Getting Started with Grafana</h4>
|
||||||
|
<p>To visualize this data in Grafana:</p>
|
||||||
|
<ol>
|
||||||
|
<li>Add Prometheus as a data source pointing to this app's <code>/metrics</code> endpoint</li>
|
||||||
|
<li>Add Azure Monitor as a data source for Application Insights</li>
|
||||||
|
<li>Create dashboards to visualize your metrics and logs</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button class="btn btn-primary" @onclick="LogTestMessage">Generate Test Log</button>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
private void LogTestMessage()
|
||||||
|
{
|
||||||
|
Logger.LogInformation("Test log message generated from Home page at {Timestamp}", DateTime.UtcNow);
|
||||||
|
Logger.LogWarning("This is a warning message for testing");
|
||||||
|
}
|
||||||
|
}
|
||||||
131
GrafanaBlazor/BlazorApp/Components/Pages/Logs.razor
Normal file
131
GrafanaBlazor/BlazorApp/Components/Pages/Logs.razor
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
@page "/logs"
|
||||||
|
@inject ILogger<Logs> Logger
|
||||||
|
|
||||||
|
<PageTitle>Logs</PageTitle>
|
||||||
|
|
||||||
|
<h1>Logs Demo</h1>
|
||||||
|
|
||||||
|
<p>This page helps you generate different types of log entries for testing your Grafana setup.</p>
|
||||||
|
|
||||||
|
<div class="row mt-4">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Information</h5>
|
||||||
|
<p>Generate informational log entries.</p>
|
||||||
|
<button class="btn btn-info" @onclick="@(() => LogMessage(LogLevel.Information))">
|
||||||
|
Log Information
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Warning</h5>
|
||||||
|
<p>Generate warning log entries.</p>
|
||||||
|
<button class="btn btn-warning" @onclick="@(() => LogMessage(LogLevel.Warning))">
|
||||||
|
Log Warning
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Error</h5>
|
||||||
|
<p>Generate error log entries.</p>
|
||||||
|
<button class="btn btn-danger" @onclick="@(() => LogMessage(LogLevel.Error))">
|
||||||
|
Log Error
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mt-4">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Structured Logging</h5>
|
||||||
|
<p>Generate structured log with custom properties.</p>
|
||||||
|
<button class="btn btn-primary" @onclick="LogStructuredMessage">
|
||||||
|
Log Structured Data
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Bulk Logs</h5>
|
||||||
|
<p>Generate multiple log entries at once.</p>
|
||||||
|
<button class="btn btn-secondary" @onclick="GenerateBulkLogs">
|
||||||
|
Generate 10 Logs
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="alert alert-success mt-4">
|
||||||
|
<strong>Total logs generated this session:</strong> @logCount
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
private int logCount = 0;
|
||||||
|
|
||||||
|
private void LogMessage(LogLevel level)
|
||||||
|
{
|
||||||
|
var message = $"Test {level} message generated at {DateTime.UtcNow:O}";
|
||||||
|
|
||||||
|
switch (level)
|
||||||
|
{
|
||||||
|
case LogLevel.Information:
|
||||||
|
Logger.LogInformation("{Message}", message);
|
||||||
|
break;
|
||||||
|
case LogLevel.Warning:
|
||||||
|
Logger.LogWarning("{Message}", message);
|
||||||
|
break;
|
||||||
|
case LogLevel.Error:
|
||||||
|
Logger.LogError("{Message}", message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
logCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LogStructuredMessage()
|
||||||
|
{
|
||||||
|
var userId = Guid.NewGuid();
|
||||||
|
var operationId = Random.Shared.Next(1000, 9999);
|
||||||
|
|
||||||
|
Logger.LogInformation(
|
||||||
|
"User {UserId} performed operation {OperationId} with status {Status} at {Timestamp}",
|
||||||
|
userId,
|
||||||
|
operationId,
|
||||||
|
"Success",
|
||||||
|
DateTime.UtcNow
|
||||||
|
);
|
||||||
|
|
||||||
|
logCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GenerateBulkLogs()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
var logLevel = i % 3 switch
|
||||||
|
{
|
||||||
|
0 => LogLevel.Information,
|
||||||
|
1 => LogLevel.Warning,
|
||||||
|
_ => LogLevel.Error
|
||||||
|
};
|
||||||
|
|
||||||
|
LogMessage(logLevel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
111
GrafanaBlazor/BlazorApp/Components/Pages/Metrics.razor
Normal file
111
GrafanaBlazor/BlazorApp/Components/Pages/Metrics.razor
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
@page "/metrics"
|
||||||
|
@inject ILogger<Metrics> Logger
|
||||||
|
@using System.Diagnostics
|
||||||
|
|
||||||
|
<PageTitle>Metrics</PageTitle>
|
||||||
|
|
||||||
|
<h1>Metrics Demo</h1>
|
||||||
|
|
||||||
|
<p>This page demonstrates various metrics that can be tracked and visualized in Grafana.</p>
|
||||||
|
|
||||||
|
<div class="row mt-4">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Counter Metrics</h5>
|
||||||
|
<p>Counter: @counterValue</p>
|
||||||
|
<button class="btn btn-primary" @onclick="IncrementCounter">Increment Counter</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Timer Metrics</h5>
|
||||||
|
<p>Simulate a slow operation and track its duration.</p>
|
||||||
|
<button class="btn btn-warning" @onclick="SimulateSlowOperation" disabled="@isProcessing">
|
||||||
|
@(isProcessing ? "Processing..." : "Start Slow Operation")
|
||||||
|
</button>
|
||||||
|
@if (lastDuration > 0)
|
||||||
|
{
|
||||||
|
<p class="mt-2">Last operation took: @lastDuration ms</p>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mt-4">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Error Simulation</h5>
|
||||||
|
<p>Generate different types of log entries for testing.</p>
|
||||||
|
<button class="btn btn-danger" @onclick="SimulateError">Generate Error</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Custom Metrics</h5>
|
||||||
|
<p>Page visits: @pageVisits</p>
|
||||||
|
<small class="text-muted">This counter increments each time you visit this page.</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
private int counterValue = 0;
|
||||||
|
private int pageVisits = 0;
|
||||||
|
private bool isProcessing = false;
|
||||||
|
private long lastDuration = 0;
|
||||||
|
private static readonly ActivitySource ActivitySource = new("BlazorApp.Metrics");
|
||||||
|
|
||||||
|
protected override void OnInitialized()
|
||||||
|
{
|
||||||
|
pageVisits++;
|
||||||
|
Logger.LogInformation("Metrics page visited. Total visits: {PageVisits}", pageVisits);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void IncrementCounter()
|
||||||
|
{
|
||||||
|
counterValue++;
|
||||||
|
Logger.LogInformation("Counter incremented to {CounterValue}", counterValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task SimulateSlowOperation()
|
||||||
|
{
|
||||||
|
isProcessing = true;
|
||||||
|
var sw = Stopwatch.StartNew();
|
||||||
|
|
||||||
|
using var activity = ActivitySource.StartActivity("SlowOperation");
|
||||||
|
activity?.SetTag("operation.type", "simulated");
|
||||||
|
|
||||||
|
Logger.LogInformation("Starting slow operation");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await Task.Delay(Random.Shared.Next(1000, 3000));
|
||||||
|
sw.Stop();
|
||||||
|
lastDuration = sw.ElapsedMilliseconds;
|
||||||
|
|
||||||
|
Logger.LogInformation("Slow operation completed in {Duration}ms", lastDuration);
|
||||||
|
activity?.SetTag("duration.ms", lastDuration);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
isProcessing = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SimulateError()
|
||||||
|
{
|
||||||
|
var errorId = Guid.NewGuid();
|
||||||
|
Logger.LogError("Simulated error with ID: {ErrorId}", errorId);
|
||||||
|
Logger.LogWarning("This is a test warning associated with error {ErrorId}", errorId);
|
||||||
|
}
|
||||||
|
}
|
||||||
68
GrafanaBlazor/BlazorApp/Program.cs
Normal file
68
GrafanaBlazor/BlazorApp/Program.cs
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using BlazorApp.Components;
|
||||||
|
using Serilog;
|
||||||
|
using OpenTelemetry.Resources;
|
||||||
|
using OpenTelemetry.Trace;
|
||||||
|
using OpenTelemetry.Metrics;
|
||||||
|
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
|
// Configure Serilog
|
||||||
|
Log.Logger = new LoggerConfiguration()
|
||||||
|
.ReadFrom.Configuration(builder.Configuration)
|
||||||
|
.Enrich.FromLogContext()
|
||||||
|
.WriteTo.Console()
|
||||||
|
.WriteTo.File("logs/blazorapp-.log", rollingInterval: RollingInterval.Day)
|
||||||
|
.CreateLogger();
|
||||||
|
|
||||||
|
builder.Host.UseSerilog();
|
||||||
|
|
||||||
|
// Add services to the container
|
||||||
|
builder.Services.AddRazorComponents()
|
||||||
|
.AddInteractiveServerComponents();
|
||||||
|
|
||||||
|
// Add Application Insights
|
||||||
|
builder.Services.AddApplicationInsightsTelemetry();
|
||||||
|
|
||||||
|
// Add OpenTelemetry
|
||||||
|
builder.Services.AddOpenTelemetry()
|
||||||
|
.ConfigureResource(resource => resource
|
||||||
|
.AddService(serviceName: "BlazorApp"))
|
||||||
|
.WithTracing(tracing => tracing
|
||||||
|
.AddAspNetCoreInstrumentation()
|
||||||
|
.AddHttpClientInstrumentation()
|
||||||
|
.AddConsoleExporter())
|
||||||
|
.WithMetrics(metrics => metrics
|
||||||
|
.AddAspNetCoreInstrumentation()
|
||||||
|
.AddHttpClientInstrumentation()
|
||||||
|
.AddConsoleExporter());
|
||||||
|
|
||||||
|
// Add health checks
|
||||||
|
builder.Services.AddHealthChecks();
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
// Configure the HTTP request pipeline
|
||||||
|
if (!app.Environment.IsDevelopment())
|
||||||
|
{
|
||||||
|
app.UseExceptionHandler("/Error", createScopeForErrors: true);
|
||||||
|
app.UseHsts();
|
||||||
|
}
|
||||||
|
|
||||||
|
app.UseHttpsRedirection();
|
||||||
|
app.UseStaticFiles();
|
||||||
|
app.UseAntiforgery();
|
||||||
|
|
||||||
|
// Enable Prometheus metrics endpoint
|
||||||
|
app.UseMetricServer();
|
||||||
|
app.UseHttpMetrics();
|
||||||
|
|
||||||
|
// Map health check endpoint
|
||||||
|
app.MapHealthChecks("/health");
|
||||||
|
|
||||||
|
app.MapRazorComponents<App>()
|
||||||
|
.AddInteractiveServerRenderMode();
|
||||||
|
|
||||||
|
app.Logger.LogInformation("BlazorApp starting up...");
|
||||||
|
|
||||||
|
app.Run();
|
||||||
6
GrafanaBlazor/BlazorApp/Routes.razor
Normal file
6
GrafanaBlazor/BlazorApp/Routes.razor
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<Router AppAssembly="@typeof(Program).Assembly">
|
||||||
|
<Found Context="routeData">
|
||||||
|
<RouteView RouteData="@routeData" DefaultLayout="@typeof(Layout.MainLayout)" />
|
||||||
|
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
|
||||||
|
</Found>
|
||||||
|
</Router>
|
||||||
11
GrafanaBlazor/BlazorApp/_Imports.razor
Normal file
11
GrafanaBlazor/BlazorApp/_Imports.razor
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
@using System.Net.Http
|
||||||
|
@using System.Net.Http.Json
|
||||||
|
@using Microsoft.AspNetCore.Components.Forms
|
||||||
|
@using Microsoft.AspNetCore.Components.Routing
|
||||||
|
@using Microsoft.AspNetCore.Components.Web
|
||||||
|
@using static Microsoft.AspNetCore.Components.Web.RenderMode
|
||||||
|
@using Microsoft.AspNetCore.Components.Web.Virtualization
|
||||||
|
@using Microsoft.JSInterop
|
||||||
|
@using BlazorApp
|
||||||
|
@using BlazorApp.Components
|
||||||
|
@using BlazorApp.Components.Layout
|
||||||
27
GrafanaBlazor/BlazorApp/appsettings.json
Normal file
27
GrafanaBlazor/BlazorApp/appsettings.json
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"Serilog": {
|
||||||
|
"MinimumLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Override": {
|
||||||
|
"Microsoft": "Warning",
|
||||||
|
"Microsoft.Hosting.Lifetime": "Information",
|
||||||
|
"System": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
},
|
||||||
|
"ApplicationInsights": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*",
|
||||||
|
"ApplicationInsights": {
|
||||||
|
"ConnectionString": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
130
GrafanaBlazor/BlazorApp/obj/BlazorApp.csproj.nuget.dgspec.json
Normal file
130
GrafanaBlazor/BlazorApp/obj/BlazorApp.csproj.nuget.dgspec.json
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
{
|
||||||
|
"format": 1,
|
||||||
|
"restore": {
|
||||||
|
"/home/robert/Documents/repos/azure-web/BlazorApp/BlazorApp.csproj": {}
|
||||||
|
},
|
||||||
|
"projects": {
|
||||||
|
"/home/robert/Documents/repos/azure-web/BlazorApp/BlazorApp.csproj": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "/home/robert/Documents/repos/azure-web/BlazorApp/BlazorApp.csproj",
|
||||||
|
"projectName": "BlazorApp",
|
||||||
|
"projectPath": "/home/robert/Documents/repos/azure-web/BlazorApp/BlazorApp.csproj",
|
||||||
|
"packagesPath": "/home/robert/.nuget/packages/",
|
||||||
|
"outputPath": "/home/robert/Documents/repos/azure-web/BlazorApp/obj/",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"configFilePaths": [
|
||||||
|
"/home/robert/.nuget/NuGet/NuGet.Config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"net8.0"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net8.0": {
|
||||||
|
"targetAlias": "net8.0",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"warningProperties": {
|
||||||
|
"warnAsError": [
|
||||||
|
"NU1605"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "direct"
|
||||||
|
},
|
||||||
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net8.0": {
|
||||||
|
"targetAlias": "net8.0",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.ApplicationInsights.AspNetCore": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[2.22.0, )"
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.Logging.ApplicationInsights": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[2.22.0, )"
|
||||||
|
},
|
||||||
|
"OpenTelemetry.Exporter.Console": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.7.0, )"
|
||||||
|
},
|
||||||
|
"OpenTelemetry.Exporter.OpenTelemetryProtocol": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.7.0, )"
|
||||||
|
},
|
||||||
|
"OpenTelemetry.Extensions.Hosting": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.7.0, )"
|
||||||
|
},
|
||||||
|
"OpenTelemetry.Instrumentation.AspNetCore": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.7.1, )"
|
||||||
|
},
|
||||||
|
"OpenTelemetry.Instrumentation.Http": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[1.7.1, )"
|
||||||
|
},
|
||||||
|
"Serilog.AspNetCore": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[8.0.1, )"
|
||||||
|
},
|
||||||
|
"Serilog.Settings.Configuration": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[8.0.0, )"
|
||||||
|
},
|
||||||
|
"Serilog.Sinks.Console": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[5.0.1, )"
|
||||||
|
},
|
||||||
|
"Serilog.Sinks.File": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[5.0.0, )"
|
||||||
|
},
|
||||||
|
"prometheus-net.AspNetCore": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[8.2.1, )"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [
|
||||||
|
"net461",
|
||||||
|
"net462",
|
||||||
|
"net47",
|
||||||
|
"net471",
|
||||||
|
"net472",
|
||||||
|
"net48",
|
||||||
|
"net481"
|
||||||
|
],
|
||||||
|
"assetTargetFallback": true,
|
||||||
|
"warn": true,
|
||||||
|
"downloadDependencies": [
|
||||||
|
{
|
||||||
|
"name": "Microsoft.AspNetCore.App.Ref",
|
||||||
|
"version": "[8.0.22, 8.0.22]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.NETCore.App.Host.linux-x64",
|
||||||
|
"version": "[8.0.22, 8.0.22]"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"frameworkReferences": {
|
||||||
|
"Microsoft.AspNetCore.App": {
|
||||||
|
"privateAssets": "none"
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.App": {
|
||||||
|
"privateAssets": "all"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/10.0.100/PortableRuntimeIdentifierGraph.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
GrafanaBlazor/BlazorApp/obj/BlazorApp.csproj.nuget.g.props
Normal file
15
GrafanaBlazor/BlazorApp/obj/BlazorApp.csproj.nuget.g.props
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||||
|
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||||
|
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||||
|
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/robert/.nuget/packages/</NuGetPackageRoot>
|
||||||
|
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/robert/.nuget/packages/</NuGetPackageFolders>
|
||||||
|
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||||
|
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<SourceRoot Include="/home/robert/.nuget/packages/" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<Import Project="$(NuGetPackageRoot)system.text.json/8.0.0/buildTransitive/net6.0/System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json/8.0.0/buildTransitive/net6.0/System.Text.Json.targets')" />
|
||||||
|
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder/8.0.0/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder/8.0.0/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets')" />
|
||||||
|
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options/8.0.0/buildTransitive/net6.0/Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options/8.0.0/buildTransitive/net6.0/Microsoft.Extensions.Options.targets')" />
|
||||||
|
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/8.0.0/buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/8.0.0/buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// <autogenerated />
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: System.Reflection.AssemblyCompanyAttribute("BlazorApp")]
|
||||||
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyProductAttribute("BlazorApp")]
|
||||||
|
[assembly: System.Reflection.AssemblyTitleAttribute("BlazorApp")]
|
||||||
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
||||||
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
dde306ccf7bf4bb8d082a60aec7ba74921708f37594eac062aeef1d7dbc4376b
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
is_global = true
|
||||||
|
build_property.TargetFramework = net8.0
|
||||||
|
build_property.TargetFrameworkIdentifier = .NETCoreApp
|
||||||
|
build_property.TargetFrameworkVersion = v8.0
|
||||||
|
build_property.TargetPlatformMinVersion =
|
||||||
|
build_property.UsingMicrosoftNETSdkWeb = true
|
||||||
|
build_property.ProjectTypeGuids =
|
||||||
|
build_property.InvariantGlobalization =
|
||||||
|
build_property.PlatformNeutralAssembly =
|
||||||
|
build_property.EnforceExtendedAnalyzerRules =
|
||||||
|
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||||
|
build_property.RootNamespace = BlazorApp
|
||||||
|
build_property.RootNamespace = BlazorApp
|
||||||
|
build_property.ProjectDir = /home/robert/Documents/repos/azure-web/BlazorApp/
|
||||||
|
build_property.EnableComHosting =
|
||||||
|
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||||
|
build_property.RazorLangVersion = 8.0
|
||||||
|
build_property.SupportLocalizedComponentNames =
|
||||||
|
build_property.GenerateRazorMetadataSourceChecksumAttributes =
|
||||||
|
build_property.MSBuildProjectDirectory = /home/robert/Documents/repos/azure-web/BlazorApp
|
||||||
|
build_property._RazorSourceGeneratorDebug =
|
||||||
|
build_property.EffectiveAnalysisLevelStyle = 8.0
|
||||||
|
build_property.EnableCodeStyleSeverity =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/BlazorApp/App.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = QXBwLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/BlazorApp/Components/Layout/MainLayout.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9MYXlvdXQvTWFpbkxheW91dC5yYXpvcg==
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/BlazorApp/Components/Layout/NavMenu.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9MYXlvdXQvTmF2TWVudS5yYXpvcg==
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/BlazorApp/Components/Pages/Home.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9Ib21lLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/BlazorApp/Components/Pages/Logs.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9Mb2dzLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/BlazorApp/Components/Pages/Metrics.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9NZXRyaWNzLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/BlazorApp/Routes.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Um91dGVzLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/BlazorApp/_Imports.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = X0ltcG9ydHMucmF6b3I=
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
// <auto-generated/>
|
||||||
|
global using Microsoft.AspNetCore.Builder;
|
||||||
|
global using Microsoft.AspNetCore.Hosting;
|
||||||
|
global using Microsoft.AspNetCore.Http;
|
||||||
|
global using Microsoft.AspNetCore.Routing;
|
||||||
|
global using Microsoft.Extensions.Configuration;
|
||||||
|
global using Microsoft.Extensions.DependencyInjection;
|
||||||
|
global using Microsoft.Extensions.Hosting;
|
||||||
|
global using Microsoft.Extensions.Logging;
|
||||||
|
global using System;
|
||||||
|
global using System.Collections.Generic;
|
||||||
|
global using System.IO;
|
||||||
|
global using System.Linq;
|
||||||
|
global using System.Net.Http;
|
||||||
|
global using System.Net.Http.Json;
|
||||||
|
global using System.Threading;
|
||||||
|
global using System.Threading.Tasks;
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Prometheus.AspNetCore")]
|
||||||
|
|
||||||
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
BIN
GrafanaBlazor/BlazorApp/obj/Debug/net8.0/BlazorApp.assets.cache
Normal file
BIN
GrafanaBlazor/BlazorApp/obj/Debug/net8.0/BlazorApp.assets.cache
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
ef03edf2c1c99e1989ab37ede0615e351e3bc6e15d8617b06a4ad5647c3f51a0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
/home/robert/Documents/repos/azure-web/BlazorApp/obj/Debug/net8.0/BlazorApp.csproj.AssemblyReference.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/BlazorApp/obj/Debug/net8.0/rpswa.dswa.cache.json
|
||||||
|
/home/robert/Documents/repos/azure-web/BlazorApp/obj/Debug/net8.0/BlazorApp.GeneratedMSBuildEditorConfig.editorconfig
|
||||||
|
/home/robert/Documents/repos/azure-web/BlazorApp/obj/Debug/net8.0/BlazorApp.AssemblyInfoInputs.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/BlazorApp/obj/Debug/net8.0/BlazorApp.AssemblyInfo.cs
|
||||||
|
/home/robert/Documents/repos/azure-web/BlazorApp/obj/Debug/net8.0/BlazorApp.csproj.CoreCompileInputs.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/BlazorApp/obj/Debug/net8.0/BlazorApp.MvcApplicationPartsAssemblyInfo.cs
|
||||||
|
/home/robert/Documents/repos/azure-web/BlazorApp/obj/Debug/net8.0/BlazorApp.MvcApplicationPartsAssemblyInfo.cache
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"GlobalPropertiesHash":"ccQuP1h3J+qTJlTd8+t+EvsyTwT1WmMsdQ/GW8nCKBc=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["tTnK8VUcByjbDNR3a5TUed7WtuZcrVb9xbQJVhhiA5Y=","wv3kWnxdu1GvUaj9yySJfSu8aIocx9q0N1tZgcuTtWU=","LUrdm5WNNdZ4curT1rcM14xYzMF2HUsvkEqzMDZuwHI=","\u002BBqpfRks1dooPQQFQphQqPHm\u002BCeGAxwlSKsCegwbz6w=","z4vvdOQGcTxT7gN/WazgKuHHW80TDeNq99hp0X4qvF4=","bKHuv3z/aoG9kiqpmS/dQ8Nzmmi4GF76C065sPumDYM=","HThbJsxP5IboY2SH/oKqCBPVvW3gJKZ5TTgMuJ7HgJ4=","5oYWPZBeN\u002BAz07n7PuF5dX7tsf462mR/xxyywNYTY3k=","wB\u002Blqe/iZ5yw7FIWDOfSV1HFOylSoOb15S7E8siy96Q=","Cs\u002BqzZ3\u002BpvqaIGeeWRgClp1Y51DUyFbmgOLK99kpgJg="],"CachedAssets":{"tTnK8VUcByjbDNR3a5TUed7WtuZcrVb9xbQJVhhiA5Y=":{"Identity":"/home/robert/Documents/repos/azure-web/BlazorApp/wwwroot/css/app.css","SourceId":"BlazorApp","SourceType":"Discovered","ContentRoot":"/home/robert/Documents/repos/azure-web/BlazorApp/wwwroot/","BasePath":"/","RelativePath":"css/app#[.{fingerprint}]?.css","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"5pqjz6pznu","Integrity":"F8fWEP6GxgmqtOdEh5xA2AiAM2TdbQPtdl8qewWuKZQ=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot/css/app.css","FileLength":2304,"LastWriteTime":"2026-01-28T02:52:52.6882561+00:00"}},"CachedCopyCandidates":{}}
|
||||||
4833
GrafanaBlazor/BlazorApp/obj/project.assets.json
Normal file
4833
GrafanaBlazor/BlazorApp/obj/project.assets.json
Normal file
File diff suppressed because it is too large
Load Diff
131
GrafanaBlazor/BlazorApp/obj/project.nuget.cache
Normal file
131
GrafanaBlazor/BlazorApp/obj/project.nuget.cache
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"dgSpecHash": "f9jnpdTI+sg=",
|
||||||
|
"success": true,
|
||||||
|
"projectFilePath": "/home/robert/Documents/repos/azure-web/BlazorApp/BlazorApp.csproj",
|
||||||
|
"expectedPackageFiles": [
|
||||||
|
"/home/robert/.nuget/packages/google.protobuf/3.22.5/google.protobuf.3.22.5.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/grpc.core.api/2.52.0/grpc.core.api.2.52.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/grpc.net.client/2.52.0/grpc.net.client.2.52.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/grpc.net.common/2.52.0/grpc.net.common.2.52.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.applicationinsights/2.22.0/microsoft.applicationinsights.2.22.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.applicationinsights.aspnetcore/2.22.0/microsoft.applicationinsights.aspnetcore.2.22.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.applicationinsights.dependencycollector/2.22.0/microsoft.applicationinsights.dependencycollector.2.22.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.applicationinsights.eventcountercollector/2.22.0/microsoft.applicationinsights.eventcountercollector.2.22.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.applicationinsights.perfcountercollector/2.22.0/microsoft.applicationinsights.perfcountercollector.2.22.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.applicationinsights.windowsserver/2.22.0/microsoft.applicationinsights.windowsserver.2.22.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.applicationinsights.windowsserver.telemetrychannel/2.22.0/microsoft.applicationinsights.windowsserver.telemetrychannel.2.22.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.aspnetcore.hosting/2.1.1/microsoft.aspnetcore.hosting.2.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.aspnetcore.hosting.abstractions/2.1.1/microsoft.aspnetcore.hosting.abstractions.2.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.aspnetcore.hosting.server.abstractions/2.1.1/microsoft.aspnetcore.hosting.server.abstractions.2.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.aspnetcore.http/2.1.22/microsoft.aspnetcore.http.2.1.22.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.aspnetcore.http.abstractions/2.1.1/microsoft.aspnetcore.http.abstractions.2.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.aspnetcore.http.extensions/2.1.1/microsoft.aspnetcore.http.extensions.2.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.aspnetcore.http.features/2.1.1/microsoft.aspnetcore.http.features.2.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.aspnetcore.webutilities/2.1.1/microsoft.aspnetcore.webutilities.2.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.caching.abstractions/1.0.0/microsoft.extensions.caching.abstractions.1.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.caching.memory/1.0.0/microsoft.extensions.caching.memory.1.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.configuration/8.0.0/microsoft.extensions.configuration.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.configuration.abstractions/8.0.0/microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.configuration.binder/8.0.0/microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.configuration.environmentvariables/2.1.1/microsoft.extensions.configuration.environmentvariables.2.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.configuration.fileextensions/3.1.0/microsoft.extensions.configuration.fileextensions.3.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.configuration.json/3.1.0/microsoft.extensions.configuration.json.3.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.dependencyinjection/8.0.0/microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.dependencyinjection.abstractions/8.0.0/microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.dependencymodel/8.0.0/microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.diagnostics.abstractions/8.0.0/microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.fileproviders.abstractions/8.0.0/microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.fileproviders.physical/3.1.0/microsoft.extensions.fileproviders.physical.3.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.filesystemglobbing/3.1.0/microsoft.extensions.filesystemglobbing.3.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.hosting.abstractions/8.0.0/microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.http/3.1.0/microsoft.extensions.http.3.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.logging/8.0.0/microsoft.extensions.logging.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.logging.abstractions/8.0.0/microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.logging.applicationinsights/2.22.0/microsoft.extensions.logging.applicationinsights.2.22.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.logging.configuration/8.0.0/microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.objectpool/7.0.0/microsoft.extensions.objectpool.7.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.options/8.0.0/microsoft.extensions.options.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.options.configurationextensions/8.0.0/microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.extensions.primitives/8.0.0/microsoft.extensions.primitives.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.net.http.headers/2.1.1/microsoft.net.http.headers.2.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.netcore.platforms/1.0.1/microsoft.netcore.platforms.1.0.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.netcore.targets/1.0.1/microsoft.netcore.targets.1.0.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.win32.systemevents/6.0.0/microsoft.win32.systemevents.6.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/opentelemetry/1.7.0/opentelemetry.1.7.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/opentelemetry.api/1.7.0/opentelemetry.api.1.7.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/opentelemetry.api.providerbuilderextensions/1.7.0/opentelemetry.api.providerbuilderextensions.1.7.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/opentelemetry.exporter.console/1.7.0/opentelemetry.exporter.console.1.7.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/opentelemetry.exporter.opentelemetryprotocol/1.7.0/opentelemetry.exporter.opentelemetryprotocol.1.7.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/opentelemetry.extensions.hosting/1.7.0/opentelemetry.extensions.hosting.1.7.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/opentelemetry.instrumentation.aspnetcore/1.7.1/opentelemetry.instrumentation.aspnetcore.1.7.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/opentelemetry.instrumentation.http/1.7.1/opentelemetry.instrumentation.http.1.7.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/prometheus-net/8.2.1/prometheus-net.8.2.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/prometheus-net.aspnetcore/8.2.1/prometheus-net.aspnetcore.8.2.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/serilog/3.1.1/serilog.3.1.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/serilog.aspnetcore/8.0.1/serilog.aspnetcore.8.0.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/serilog.extensions.hosting/8.0.0/serilog.extensions.hosting.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/serilog.extensions.logging/8.0.0/serilog.extensions.logging.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/serilog.formatting.compact/2.0.0/serilog.formatting.compact.2.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/serilog.settings.configuration/8.0.0/serilog.settings.configuration.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/serilog.sinks.console/5.0.1/serilog.sinks.console.5.0.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/serilog.sinks.debug/2.0.0/serilog.sinks.debug.2.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/serilog.sinks.file/5.0.0/serilog.sinks.file.5.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.buffers/4.5.0/system.buffers.4.5.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.collections/4.0.11/system.collections.4.0.11.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.configuration.configurationmanager/6.0.0/system.configuration.configurationmanager.6.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.diagnostics.debug/4.0.11/system.diagnostics.debug.4.0.11.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.diagnostics.diagnosticsource/8.0.0/system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.diagnostics.performancecounter/6.0.0/system.diagnostics.performancecounter.6.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.drawing.common/6.0.0/system.drawing.common.6.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.globalization/4.0.11/system.globalization.4.0.11.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.io/4.1.0/system.io.4.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.io.filesystem.accesscontrol/4.7.0/system.io.filesystem.accesscontrol.4.7.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.linq/4.1.0/system.linq.4.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.memory/4.5.3/system.memory.4.5.3.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.reflection/4.1.0/system.reflection.4.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.reflection.metadata/1.6.0/system.reflection.metadata.1.6.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.reflection.primitives/4.0.1/system.reflection.primitives.4.0.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.resources.resourcemanager/4.0.1/system.resources.resourcemanager.4.0.1.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.runtime/4.1.0/system.runtime.4.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.runtime.extensions/4.1.0/system.runtime.extensions.4.1.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.security.accesscontrol/6.0.0/system.security.accesscontrol.6.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.security.cryptography.protecteddata/6.0.0/system.security.cryptography.protecteddata.6.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.security.permissions/6.0.0/system.security.permissions.6.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.security.principal.windows/4.7.0/system.security.principal.windows.4.7.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.text.encoding/4.0.11/system.text.encoding.4.0.11.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.text.encodings.web/8.0.0/system.text.encodings.web.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.text.json/8.0.0/system.text.json.8.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.threading/4.0.11/system.threading.4.0.11.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.threading.tasks/4.0.11/system.threading.tasks.4.0.11.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/system.windows.extensions/6.0.0/system.windows.extensions.6.0.0.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.aspnetcore.app.ref/8.0.22/microsoft.aspnetcore.app.ref.8.0.22.nupkg.sha512",
|
||||||
|
"/home/robert/.nuget/packages/microsoft.netcore.app.host.linux-x64/8.0.22/microsoft.netcore.app.host.linux-x64.8.0.22.nupkg.sha512"
|
||||||
|
],
|
||||||
|
"logs": [
|
||||||
|
{
|
||||||
|
"code": "NU1902",
|
||||||
|
"level": "Warning",
|
||||||
|
"message": "Package 'OpenTelemetry.Instrumentation.AspNetCore' 1.7.1 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-vh2m-22xx-q94f",
|
||||||
|
"projectPath": "/home/robert/Documents/repos/azure-web/BlazorApp/BlazorApp.csproj",
|
||||||
|
"warningLevel": 1,
|
||||||
|
"filePath": "/home/robert/Documents/repos/azure-web/BlazorApp/BlazorApp.csproj",
|
||||||
|
"libraryId": "OpenTelemetry.Instrumentation.AspNetCore",
|
||||||
|
"targetGraphs": [
|
||||||
|
"net8.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "NU1902",
|
||||||
|
"level": "Warning",
|
||||||
|
"message": "Package 'OpenTelemetry.Instrumentation.Http' 1.7.1 has a known moderate severity vulnerability, https://github.com/advisories/GHSA-vh2m-22xx-q94f",
|
||||||
|
"projectPath": "/home/robert/Documents/repos/azure-web/BlazorApp/BlazorApp.csproj",
|
||||||
|
"warningLevel": 1,
|
||||||
|
"filePath": "/home/robert/Documents/repos/azure-web/BlazorApp/BlazorApp.csproj",
|
||||||
|
"libraryId": "OpenTelemetry.Instrumentation.Http",
|
||||||
|
"targetGraphs": [
|
||||||
|
"net8.0"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
144
GrafanaBlazor/BlazorApp/wwwroot/css/app.css
Normal file
144
GrafanaBlazor/BlazorApp/wwwroot/css/app.css
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
html, body {
|
||||||
|
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a, .btn-link {
|
||||||
|
color: #006bb7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #1b6ec2;
|
||||||
|
border-color: #1861ac;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
|
||||||
|
box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
padding-top: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.valid.modified:not([type=checkbox]) {
|
||||||
|
outline: 1px solid #26b050;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invalid {
|
||||||
|
outline: 1px solid red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.validation-message {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blazor-error-ui {
|
||||||
|
background: lightyellow;
|
||||||
|
bottom: 0;
|
||||||
|
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
|
||||||
|
display: none;
|
||||||
|
left: 0;
|
||||||
|
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#blazor-error-ui .dismiss {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
right: 0.75rem;
|
||||||
|
top: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar {
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top-row {
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
border-bottom: 1px solid #d6d5d5;
|
||||||
|
justify-content: flex-end;
|
||||||
|
height: 3.5rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-scrollable {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item:first-of-type {
|
||||||
|
padding-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item:last-of-type {
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item a {
|
||||||
|
color: #d7d7d7;
|
||||||
|
border-radius: 4px;
|
||||||
|
height: 3rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 3rem;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item a.active {
|
||||||
|
background-color: rgba(255,255,255,0.25);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-item a:hover {
|
||||||
|
background-color: rgba(255,255,255,0.1);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 641px) {
|
||||||
|
.page {
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar {
|
||||||
|
width: 250px;
|
||||||
|
height: 100vh;
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top-row {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-scrollable {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
main > div {
|
||||||
|
padding-left: 2rem !important;
|
||||||
|
padding-right: 1.5rem !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
23
GrafanaBlazor/FluentBlazorApp/Components/App.razor
Normal file
23
GrafanaBlazor/FluentBlazorApp/Components/App.razor
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<base href="/" />
|
||||||
|
<ResourcePreloader />
|
||||||
|
<link rel="stylesheet" href="@Assets["app.css"]" />
|
||||||
|
<link rel="stylesheet" href="@Assets["FluentBlazorApp.styles.css"]" />
|
||||||
|
<ImportMap />
|
||||||
|
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
||||||
|
<HeadOutlet />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<Routes />
|
||||||
|
<ReconnectModal />
|
||||||
|
<script src="@Assets["_framework/blazor.web.js"]"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
@inherits LayoutComponentBase
|
||||||
|
|
||||||
|
<FluentLayout>
|
||||||
|
<FluentHeader>
|
||||||
|
FluentBlazorApp
|
||||||
|
</FluentHeader>
|
||||||
|
<FluentStack Class="main" Orientation="Orientation.Horizontal" Width="100%">
|
||||||
|
<NavMenu />
|
||||||
|
<FluentBodyContent Class="body-content">
|
||||||
|
<div class="content">
|
||||||
|
@Body
|
||||||
|
</div>
|
||||||
|
</FluentBodyContent>
|
||||||
|
</FluentStack>
|
||||||
|
<FluentFooter>
|
||||||
|
<a href="https://www.fluentui-blazor.net" target="_blank">Documentation and demos</a>
|
||||||
|
<FluentSpacer />
|
||||||
|
<a href="https://learn.microsoft.com/en-us/aspnet/core/blazor" target="_blank">About Blazor</a>
|
||||||
|
</FluentFooter>
|
||||||
|
</FluentLayout>
|
||||||
|
|
||||||
|
<div id="blazor-error-ui" data-nosnippet>
|
||||||
|
An unhandled error has occurred.
|
||||||
|
<a href="." class="reload">Reload</a>
|
||||||
|
<span class="dismiss">🗙</span>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
@rendermode InteractiveServer
|
||||||
|
|
||||||
|
<div class="navmenu">
|
||||||
|
<input type="checkbox" title="Menu expand/collapse toggle" id="navmenu-toggle" class="navmenu-icon" />
|
||||||
|
<label for="navmenu-toggle" class="navmenu-icon"><FluentIcon Value="@(new Icons.Regular.Size20.Navigation())" Color="Color.Fill" /></label>
|
||||||
|
<nav class="sitenav" aria-labelledby="main-menu">
|
||||||
|
<FluentNavMenu Id="main-menu" Collapsible="true" Width="250" Title="Navigation menu" @bind-Expanded="expanded" CustomToggle="true">
|
||||||
|
<FluentNavLink Href="/" Match="NavLinkMatch.All" Icon="@(new Icons.Regular.Size20.Home())" IconColor="Color.Accent">Home</FluentNavLink>
|
||||||
|
<FluentNavLink Href="counter" Icon="@(new Icons.Regular.Size20.NumberSymbolSquare())" IconColor="Color.Accent">Counter</FluentNavLink>
|
||||||
|
<FluentNavLink Href="weather" Icon="@(new Icons.Regular.Size20.WeatherPartlyCloudyDay())" IconColor="Color.Accent">Weather</FluentNavLink>
|
||||||
|
</FluentNavMenu>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
private bool expanded = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<script type="module" src="@Assets["Components/Layout/ReconnectModal.razor.js"]"></script>
|
||||||
|
|
||||||
|
<dialog id="components-reconnect-modal" data-nosnippet>
|
||||||
|
<div class="components-reconnect-container">
|
||||||
|
<div class="components-rejoining-animation" aria-hidden="true">
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
<p class="components-reconnect-first-attempt-visible">
|
||||||
|
Rejoining the server...
|
||||||
|
</p>
|
||||||
|
<p class="components-reconnect-repeated-attempt-visible">
|
||||||
|
Rejoin failed... trying again in <span id="components-seconds-to-next-attempt"></span> seconds.
|
||||||
|
</p>
|
||||||
|
<p class="components-reconnect-failed-visible">
|
||||||
|
Failed to rejoin.<br />Please retry or reload the page.
|
||||||
|
</p>
|
||||||
|
<button id="components-reconnect-button" class="components-reconnect-failed-visible">
|
||||||
|
Retry
|
||||||
|
</button>
|
||||||
|
<p class="components-pause-visible">
|
||||||
|
The session has been paused by the server.
|
||||||
|
</p>
|
||||||
|
<button id="components-resume-button" class="components-pause-visible">
|
||||||
|
Resume
|
||||||
|
</button>
|
||||||
|
<p class="components-resume-failed-visible">
|
||||||
|
Failed to resume the session.<br />Please reload the page.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</dialog>
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
.components-reconnect-first-attempt-visible,
|
||||||
|
.components-reconnect-repeated-attempt-visible,
|
||||||
|
.components-reconnect-failed-visible,
|
||||||
|
.components-pause-visible,
|
||||||
|
.components-resume-failed-visible,
|
||||||
|
.components-rejoining-animation {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible,
|
||||||
|
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation,
|
||||||
|
#components-reconnect-modal.components-reconnect-paused .components-pause-visible,
|
||||||
|
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible,
|
||||||
|
#components-reconnect-modal.components-reconnect-retrying,
|
||||||
|
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible,
|
||||||
|
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation,
|
||||||
|
#components-reconnect-modal.components-reconnect-failed,
|
||||||
|
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#components-reconnect-modal {
|
||||||
|
background-color: white;
|
||||||
|
width: 20rem;
|
||||||
|
margin: 20vh auto;
|
||||||
|
padding: 2rem;
|
||||||
|
border: 0;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
opacity: 0;
|
||||||
|
transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
|
||||||
|
animation: components-reconnect-modal-fadeOutOpacity 0.5s both;
|
||||||
|
&[open]
|
||||||
|
|
||||||
|
{
|
||||||
|
animation: components-reconnect-modal-slideUp 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity 0.5s ease-in-out 0.3s;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#components-reconnect-modal::backdrop {
|
||||||
|
background-color: rgba(0, 0, 0, 0.4);
|
||||||
|
animation: components-reconnect-modal-fadeInOpacity 0.5s ease-in-out;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes components-reconnect-modal-slideUp {
|
||||||
|
0% {
|
||||||
|
transform: translateY(30px) scale(0.95);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes components-reconnect-modal-fadeInOpacity {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes components-reconnect-modal-fadeOutOpacity {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.components-reconnect-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#components-reconnect-modal p {
|
||||||
|
margin: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#components-reconnect-modal button {
|
||||||
|
border: 0;
|
||||||
|
background-color: #6b9ed2;
|
||||||
|
color: white;
|
||||||
|
padding: 4px 24px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#components-reconnect-modal button:hover {
|
||||||
|
background-color: #3b6ea2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#components-reconnect-modal button:active {
|
||||||
|
background-color: #6b9ed2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.components-rejoining-animation {
|
||||||
|
position: relative;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.components-rejoining-animation div {
|
||||||
|
position: absolute;
|
||||||
|
border: 3px solid #0087ff;
|
||||||
|
opacity: 1;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: components-rejoining-animation 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.components-rejoining-animation div:nth-child(2) {
|
||||||
|
animation-delay: -0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes components-rejoining-animation {
|
||||||
|
0% {
|
||||||
|
top: 40px;
|
||||||
|
left: 40px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
4.9% {
|
||||||
|
top: 40px;
|
||||||
|
left: 40px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
5% {
|
||||||
|
top: 40px;
|
||||||
|
left: 40px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
// Set up event handlers
|
||||||
|
const reconnectModal = document.getElementById("components-reconnect-modal");
|
||||||
|
reconnectModal.addEventListener("components-reconnect-state-changed", handleReconnectStateChanged);
|
||||||
|
|
||||||
|
const retryButton = document.getElementById("components-reconnect-button");
|
||||||
|
retryButton.addEventListener("click", retry);
|
||||||
|
|
||||||
|
const resumeButton = document.getElementById("components-resume-button");
|
||||||
|
resumeButton.addEventListener("click", resume);
|
||||||
|
|
||||||
|
function handleReconnectStateChanged(event) {
|
||||||
|
if (event.detail.state === "show") {
|
||||||
|
reconnectModal.showModal();
|
||||||
|
} else if (event.detail.state === "hide") {
|
||||||
|
reconnectModal.close();
|
||||||
|
} else if (event.detail.state === "failed") {
|
||||||
|
document.addEventListener("visibilitychange", retryWhenDocumentBecomesVisible);
|
||||||
|
} else if (event.detail.state === "rejected") {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function retry() {
|
||||||
|
document.removeEventListener("visibilitychange", retryWhenDocumentBecomesVisible);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Reconnect will asynchronously return:
|
||||||
|
// - true to mean success
|
||||||
|
// - false to mean we reached the server, but it rejected the connection (e.g., unknown circuit ID)
|
||||||
|
// - exception to mean we didn't reach the server (this can be sync or async)
|
||||||
|
const successful = await Blazor.reconnect();
|
||||||
|
if (!successful) {
|
||||||
|
// We have been able to reach the server, but the circuit is no longer available.
|
||||||
|
// We'll reload the page so the user can continue using the app as quickly as possible.
|
||||||
|
const resumeSuccessful = await Blazor.resumeCircuit();
|
||||||
|
if (!resumeSuccessful) {
|
||||||
|
location.reload();
|
||||||
|
} else {
|
||||||
|
reconnectModal.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
// We got an exception, server is currently unavailable
|
||||||
|
document.addEventListener("visibilitychange", retryWhenDocumentBecomesVisible);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function resume() {
|
||||||
|
try {
|
||||||
|
const successful = await Blazor.resumeCircuit();
|
||||||
|
if (!successful) {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function retryWhenDocumentBecomesVisible() {
|
||||||
|
if (document.visibilityState === "visible") {
|
||||||
|
await retry();
|
||||||
|
}
|
||||||
|
}
|
||||||
21
GrafanaBlazor/FluentBlazorApp/Components/Pages/Counter.razor
Normal file
21
GrafanaBlazor/FluentBlazorApp/Components/Pages/Counter.razor
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
@page "/counter"
|
||||||
|
@rendermode InteractiveServer
|
||||||
|
|
||||||
|
<PageTitle>Counter</PageTitle>
|
||||||
|
|
||||||
|
<h1>Counter</h1>
|
||||||
|
|
||||||
|
<div role="status" style="padding-bottom: 1em;">
|
||||||
|
Current count: <FluentBadge Appearance="Appearance.Neutral">@currentCount</FluentBadge>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<FluentButton Appearance="Appearance.Accent" @onclick="IncrementCount">Click me</FluentButton>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
private int currentCount = 0;
|
||||||
|
|
||||||
|
private void IncrementCount()
|
||||||
|
{
|
||||||
|
currentCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
36
GrafanaBlazor/FluentBlazorApp/Components/Pages/Error.razor
Normal file
36
GrafanaBlazor/FluentBlazorApp/Components/Pages/Error.razor
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
@page "/Error"
|
||||||
|
@using System.Diagnostics
|
||||||
|
|
||||||
|
<PageTitle>Error</PageTitle>
|
||||||
|
|
||||||
|
<h1 class="text-danger">Error.</h1>
|
||||||
|
<h2 class="text-danger">An error occurred while processing your request.</h2>
|
||||||
|
|
||||||
|
@if (ShowRequestId)
|
||||||
|
{
|
||||||
|
<p>
|
||||||
|
<strong>Request ID:</strong> <code>@RequestId</code>
|
||||||
|
</p>
|
||||||
|
}
|
||||||
|
|
||||||
|
<h3>Development Mode</h3>
|
||||||
|
<p>
|
||||||
|
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
|
||||||
|
It can result in displaying sensitive information from exceptions to end users.
|
||||||
|
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
|
||||||
|
and restarting the app.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
@code{
|
||||||
|
[CascadingParameter]
|
||||||
|
private HttpContext? HttpContext { get; set; }
|
||||||
|
|
||||||
|
private string? RequestId { get; set; }
|
||||||
|
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
|
||||||
|
|
||||||
|
protected override void OnInitialized() =>
|
||||||
|
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
@page "/"
|
||||||
|
|
||||||
|
<PageTitle>Home</PageTitle>
|
||||||
|
|
||||||
|
<h1>Hello, world!</h1>
|
||||||
|
|
||||||
|
Welcome to your new Fluent Blazor app.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
@page "/not-found"
|
||||||
|
@layout MainLayout
|
||||||
|
|
||||||
|
<h3>Not Found</h3>
|
||||||
|
<p>Sorry, the content you are looking for does not exist.</p>
|
||||||
43
GrafanaBlazor/FluentBlazorApp/Components/Pages/Weather.razor
Normal file
43
GrafanaBlazor/FluentBlazorApp/Components/Pages/Weather.razor
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
@page "/weather"
|
||||||
|
@attribute [StreamRendering]
|
||||||
|
|
||||||
|
<PageTitle>Weather</PageTitle>
|
||||||
|
|
||||||
|
<h1>Weather</h1>
|
||||||
|
|
||||||
|
<p>This component demonstrates showing data.</p>
|
||||||
|
|
||||||
|
<!-- This page is rendered in SSR mode, so the FluentDataGrid component does not offer any interactivity (like sorting). -->
|
||||||
|
<FluentDataGrid Id="weathergrid" Items="@forecasts" GridTemplateColumns="1fr 1fr 1fr 2fr" Loading="@(forecasts == null)" Style="height:204px;" TGridItem="WeatherForecast">
|
||||||
|
<PropertyColumn Title="Date" Property="@(c => c!.Date)" Align="Align.Start"/>
|
||||||
|
<PropertyColumn Title="Temp. (C)" Property="@(c => c!.TemperatureC)" Align="Align.Center"/>
|
||||||
|
<PropertyColumn Title="Temp. (F)" Property="@(c => c!.TemperatureF)" Align="Align.Center"/>
|
||||||
|
<PropertyColumn Title="Summary" Property="@(c => c!.Summary)" Align="Align.End"/>
|
||||||
|
</FluentDataGrid>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
private IQueryable<WeatherForecast>? forecasts;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
// Simulate asynchronous loading to demonstrate streaming rendering
|
||||||
|
await Task.Delay(500);
|
||||||
|
|
||||||
|
var startDate = DateOnly.FromDateTime(DateTime.Now);
|
||||||
|
var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
|
||||||
|
forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
|
||||||
|
{
|
||||||
|
Date = startDate.AddDays(index),
|
||||||
|
TemperatureC = Random.Shared.Next(-20, 55),
|
||||||
|
Summary = summaries[Random.Shared.Next(summaries.Length)]
|
||||||
|
}).AsQueryable();
|
||||||
|
}
|
||||||
|
|
||||||
|
private class WeatherForecast
|
||||||
|
{
|
||||||
|
public DateOnly Date { get; set; }
|
||||||
|
public int TemperatureC { get; set; }
|
||||||
|
public string? Summary { get; set; }
|
||||||
|
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
||||||
|
}
|
||||||
|
}
|
||||||
5
GrafanaBlazor/FluentBlazorApp/Components/Routes.razor
Normal file
5
GrafanaBlazor/FluentBlazorApp/Components/Routes.razor
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<Router AppAssembly="typeof(Program).Assembly" NotFoundPage="typeof(Pages.NotFound)">
|
||||||
|
<Found Context="routeData">
|
||||||
|
<RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" />
|
||||||
|
</Found>
|
||||||
|
</Router>
|
||||||
13
GrafanaBlazor/FluentBlazorApp/Components/_Imports.razor
Normal file
13
GrafanaBlazor/FluentBlazorApp/Components/_Imports.razor
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
@using System.Net.Http
|
||||||
|
@using System.Net.Http.Json
|
||||||
|
@using Microsoft.AspNetCore.Components.Forms
|
||||||
|
@using Microsoft.AspNetCore.Components.Routing
|
||||||
|
@using Microsoft.AspNetCore.Components.Web
|
||||||
|
@using static Microsoft.AspNetCore.Components.Web.RenderMode
|
||||||
|
@using Microsoft.AspNetCore.Components.Web.Virtualization
|
||||||
|
@using Microsoft.FluentUI.AspNetCore.Components
|
||||||
|
@using Icons = Microsoft.FluentUI.AspNetCore.Components.Icons
|
||||||
|
@using Microsoft.JSInterop
|
||||||
|
@using FluentBlazorApp
|
||||||
|
@using FluentBlazorApp.Components
|
||||||
|
@using FluentBlazorApp.Components.Layout
|
||||||
14
GrafanaBlazor/FluentBlazorApp/FluentBlazorApp.csproj
Normal file
14
GrafanaBlazor/FluentBlazorApp/FluentBlazorApp.csproj
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<BlazorDisableThrowNavigationException>true</BlazorDisableThrowNavigationException>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.FluentUI.AspNetCore.Components" Version="4.13.2" />
|
||||||
|
<PackageReference Include="Microsoft.FluentUI.AspNetCore.Components.Icons" Version="4.13.2" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
29
GrafanaBlazor/FluentBlazorApp/Program.cs
Normal file
29
GrafanaBlazor/FluentBlazorApp/Program.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using FluentBlazorApp.Components;
|
||||||
|
using Microsoft.FluentUI.AspNetCore.Components;
|
||||||
|
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
|
// Add services to the container.
|
||||||
|
builder.Services.AddRazorComponents()
|
||||||
|
.AddInteractiveServerComponents();
|
||||||
|
builder.Services.AddFluentUIComponents();
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
// Configure the HTTP request pipeline.
|
||||||
|
if (!app.Environment.IsDevelopment())
|
||||||
|
{
|
||||||
|
app.UseExceptionHandler("/Error", createScopeForErrors: true);
|
||||||
|
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
||||||
|
app.UseHsts();
|
||||||
|
}
|
||||||
|
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
|
||||||
|
app.UseHttpsRedirection();
|
||||||
|
|
||||||
|
app.UseAntiforgery();
|
||||||
|
|
||||||
|
app.MapStaticAssets();
|
||||||
|
app.MapRazorComponents<App>()
|
||||||
|
.AddInteractiveServerRenderMode();
|
||||||
|
|
||||||
|
app.Run();
|
||||||
23
GrafanaBlazor/FluentBlazorApp/Properties/launchSettings.json
Normal file
23
GrafanaBlazor/FluentBlazorApp/Properties/launchSettings.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json.schemastore.org/launchsettings.json",
|
||||||
|
"profiles": {
|
||||||
|
"http": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"launchBrowser": true,
|
||||||
|
"applicationUrl": "http://localhost:5215",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"launchBrowser": true,
|
||||||
|
"applicationUrl": "https://localhost:7002;http://localhost:5215",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
GrafanaBlazor/FluentBlazorApp/appsettings.json
Normal file
9
GrafanaBlazor/FluentBlazorApp/appsettings.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*"
|
||||||
|
}
|
||||||
BIN
GrafanaBlazor/FluentBlazorApp/bin/Debug/net10.0/FluentBlazorApp
Executable file
BIN
GrafanaBlazor/FluentBlazorApp/bin/Debug/net10.0/FluentBlazorApp
Executable file
Binary file not shown.
@@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
"runtimeTarget": {
|
||||||
|
"name": ".NETCoreApp,Version=v10.0",
|
||||||
|
"signature": ""
|
||||||
|
},
|
||||||
|
"compilationOptions": {},
|
||||||
|
"targets": {
|
||||||
|
".NETCoreApp,Version=v10.0": {
|
||||||
|
"FluentBlazorApp/1.0.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.FluentUI.AspNetCore.Components": "4.13.2",
|
||||||
|
"Microsoft.FluentUI.AspNetCore.Components.Icons": "4.13.2"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"FluentBlazorApp.dll": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.FluentUI.AspNetCore.Components/4.13.2": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net10.0/Microsoft.FluentUI.AspNetCore.Components.dll": {
|
||||||
|
"assemblyVersion": "4.13.2.25331",
|
||||||
|
"fileVersion": "4.13.2.25331"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.FluentUI.AspNetCore.Components.Icons/4.13.2": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.FluentUI.AspNetCore.Components": "4.13.2"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Microsoft.FluentUI.AspNetCore.Components.Icons.Color.dll": {
|
||||||
|
"assemblyVersion": "4.13.2.25331",
|
||||||
|
"fileVersion": "4.13.2.25331"
|
||||||
|
},
|
||||||
|
"lib/net8.0/Microsoft.FluentUI.AspNetCore.Components.Icons.Filled.dll": {
|
||||||
|
"assemblyVersion": "4.13.2.25331",
|
||||||
|
"fileVersion": "4.13.2.25331"
|
||||||
|
},
|
||||||
|
"lib/net8.0/Microsoft.FluentUI.AspNetCore.Components.Icons.Light.dll": {
|
||||||
|
"assemblyVersion": "4.13.2.25331",
|
||||||
|
"fileVersion": "4.13.2.25331"
|
||||||
|
},
|
||||||
|
"lib/net8.0/Microsoft.FluentUI.AspNetCore.Components.Icons.Regular.dll": {
|
||||||
|
"assemblyVersion": "4.13.2.25331",
|
||||||
|
"fileVersion": "4.13.2.25331"
|
||||||
|
},
|
||||||
|
"lib/net8.0/Microsoft.FluentUI.AspNetCore.Components.Icons.dll": {
|
||||||
|
"assemblyVersion": "4.13.2.25331",
|
||||||
|
"fileVersion": "4.13.2.25331"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"FluentBlazorApp/1.0.0": {
|
||||||
|
"type": "project",
|
||||||
|
"serviceable": false,
|
||||||
|
"sha512": ""
|
||||||
|
},
|
||||||
|
"Microsoft.FluentUI.AspNetCore.Components/4.13.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-OqJFJiIz32BRBcxVCLX51s6/SNXVe6X16kKBcwxb7ZzZ14w1pT2OcHtqPxfj7NYZzAyA9gpX5EhvAdGHURYD7g==",
|
||||||
|
"path": "microsoft.fluentui.aspnetcore.components/4.13.2",
|
||||||
|
"hashPath": "microsoft.fluentui.aspnetcore.components.4.13.2.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Microsoft.FluentUI.AspNetCore.Components.Icons/4.13.2": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-1AJ7yh79ELaPzcAdAwb7W0qvpTyVzh3xYGjw8Ibx+azujmSiUk5G0E7i2F4CQybVsAVN1f6l/CKO08VWKNGi9w==",
|
||||||
|
"path": "microsoft.fluentui.aspnetcore.components.icons/4.13.2",
|
||||||
|
"hashPath": "microsoft.fluentui.aspnetcore.components.icons.4.13.2.nupkg.sha512"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"runtimeOptions": {
|
||||||
|
"tfm": "net10.0",
|
||||||
|
"frameworks": [
|
||||||
|
{
|
||||||
|
"name": "Microsoft.NETCore.App",
|
||||||
|
"version": "10.0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.AspNetCore.App",
|
||||||
|
"version": "10.0.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"configProperties": {
|
||||||
|
"System.GC.Server": true,
|
||||||
|
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false,
|
||||||
|
"Microsoft.AspNetCore.Components.Endpoints.NavigationManager.DisableThrowNavigationException": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*"
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// <autogenerated />
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")]
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// <auto-generated/>
|
||||||
|
namespace Microsoft.CodeAnalysis
|
||||||
|
{
|
||||||
|
internal sealed partial class EmbeddedAttribute : global::System.Attribute
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
[assembly: System.Reflection.AssemblyCompanyAttribute("FluentBlazorApp")]
|
||||||
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||||
|
[assembly: System.Reflection.AssemblyProductAttribute("FluentBlazorApp")]
|
||||||
|
[assembly: System.Reflection.AssemblyTitleAttribute("FluentBlazorApp")]
|
||||||
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
||||||
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
37ec0e3c6239374429e3a27fd62ba3ee0a4b2fef9228bb7581630379b86160c5
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
is_global = true
|
||||||
|
build_property.TargetFramework = net10.0
|
||||||
|
build_property.TargetFrameworkIdentifier = .NETCoreApp
|
||||||
|
build_property.TargetFrameworkVersion = v10.0
|
||||||
|
build_property.TargetPlatformMinVersion =
|
||||||
|
build_property.UsingMicrosoftNETSdkWeb = true
|
||||||
|
build_property.ProjectTypeGuids =
|
||||||
|
build_property.InvariantGlobalization =
|
||||||
|
build_property.PlatformNeutralAssembly =
|
||||||
|
build_property.EnforceExtendedAnalyzerRules =
|
||||||
|
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||||
|
build_property.RootNamespace = FluentBlazorApp
|
||||||
|
build_property.RootNamespace = FluentBlazorApp
|
||||||
|
build_property.ProjectDir = /home/robert/Documents/repos/azure-web/FluentBlazorApp/
|
||||||
|
build_property.EnableComHosting =
|
||||||
|
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||||
|
build_property.RazorLangVersion = 9.0
|
||||||
|
build_property.SupportLocalizedComponentNames =
|
||||||
|
build_property.GenerateRazorMetadataSourceChecksumAttributes =
|
||||||
|
build_property.MSBuildProjectDirectory = /home/robert/Documents/repos/azure-web/FluentBlazorApp
|
||||||
|
build_property._RazorSourceGeneratorDebug =
|
||||||
|
build_property.EffectiveAnalysisLevelStyle = 10.0
|
||||||
|
build_property.EnableCodeStyleSeverity =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/App.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9BcHAucmF6b3I=
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/Layout/MainLayout.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9MYXlvdXQvTWFpbkxheW91dC5yYXpvcg==
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/Layout/NavMenu.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9MYXlvdXQvTmF2TWVudS5yYXpvcg==
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/Pages/Counter.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9Db3VudGVyLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/Pages/Error.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9FcnJvci5yYXpvcg==
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/Pages/Home.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9Ib21lLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/Pages/NotFound.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9Ob3RGb3VuZC5yYXpvcg==
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/Pages/Weather.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9XZWF0aGVyLnJhem9y
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/Routes.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9Sb3V0ZXMucmF6b3I=
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/_Imports.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9fSW1wb3J0cy5yYXpvcg==
|
||||||
|
build_metadata.AdditionalFiles.CssScope =
|
||||||
|
|
||||||
|
[/home/robert/Documents/repos/azure-web/FluentBlazorApp/Components/Layout/ReconnectModal.razor]
|
||||||
|
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9MYXlvdXQvUmVjb25uZWN0TW9kYWwucmF6b3I=
|
||||||
|
build_metadata.AdditionalFiles.CssScope = b-mr4nqgcayn
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
// <auto-generated/>
|
||||||
|
global using Microsoft.AspNetCore.Builder;
|
||||||
|
global using Microsoft.AspNetCore.Hosting;
|
||||||
|
global using Microsoft.AspNetCore.Http;
|
||||||
|
global using Microsoft.AspNetCore.Routing;
|
||||||
|
global using Microsoft.Extensions.Configuration;
|
||||||
|
global using Microsoft.Extensions.DependencyInjection;
|
||||||
|
global using Microsoft.Extensions.Hosting;
|
||||||
|
global using Microsoft.Extensions.Logging;
|
||||||
|
global using Microsoft.Extensions.Validation.Embedded;
|
||||||
|
global using System;
|
||||||
|
global using System.Collections.Generic;
|
||||||
|
global using System.IO;
|
||||||
|
global using System.Linq;
|
||||||
|
global using System.Net.Http;
|
||||||
|
global using System.Net.Http.Json;
|
||||||
|
global using System.Threading;
|
||||||
|
global using System.Threading.Tasks;
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
241042f9894018a3ed62d63d8b401a4a725b4bbe5930a63814938e5f27c133b7
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/appsettings.Development.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/appsettings.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/FluentBlazorApp.staticwebassets.runtime.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/FluentBlazorApp.staticwebassets.endpoints.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/FluentBlazorApp
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/FluentBlazorApp.deps.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/FluentBlazorApp.runtimeconfig.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/FluentBlazorApp.dll
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/FluentBlazorApp.pdb
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/Microsoft.FluentUI.AspNetCore.Components.dll
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/Microsoft.FluentUI.AspNetCore.Components.Icons.Color.dll
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/Microsoft.FluentUI.AspNetCore.Components.Icons.Filled.dll
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/Microsoft.FluentUI.AspNetCore.Components.Icons.Light.dll
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/Microsoft.FluentUI.AspNetCore.Components.Icons.Regular.dll
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/bin/Debug/net10.0/Microsoft.FluentUI.AspNetCore.Components.Icons.dll
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/EmbeddedAttribute.cs
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/ValidatableTypeAttribute.cs
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBlazorApp.csproj.AssemblyReference.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/rpswa.dswa.cache.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBlazorApp.GeneratedMSBuildEditorConfig.editorconfig
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBlazorApp.AssemblyInfoInputs.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBlazorApp.AssemblyInfo.cs
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBlazorApp.csproj.CoreCompileInputs.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBlazorApp.MvcApplicationPartsAssemblyInfo.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/rjimswa.dswa.cache.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/rjsmrazor.dswa.cache.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/jsmodules/jsmodules.build.manifest.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/scopedcss/Components/Layout/ReconnectModal.razor.rz.scp.css
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/scopedcss/bundle/FluentBlazorApp.styles.css
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/scopedcss/projectbundle/FluentBlazorApp.bundle.scp.css
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/hepkpbjuec-{0}-l5v3n1o5hs-l5v3n1o5hs.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/cdrmjjq1d6-{0}-dpoev2zj9b-dpoev2zj9b.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/twd6d0wh4o-{0}-73nt9uxv2t-73nt9uxv2t.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/akzl5bxou0-{0}-p6kf5zqzit-p6kf5zqzit.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/cq4bmj8gmb-{0}-zjzit57lox-zjzit57lox.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/klh9ieqob8-{0}-dvdt7c1hdi-dvdt7c1hdi.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/qtsc4kwma6-{0}-h5k564t0jv-h5k564t0jv.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/4jvn6qpxj5-{0}-7i47nr1axg-7i47nr1axg.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/vhycmzqsg2-{0}-oy1cuw4jhq-oy1cuw4jhq.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/7g337ulk4n-{0}-iy34mpf72d-iy34mpf72d.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/6mwvvlkmgj-{0}-hi1gwvth64-hi1gwvth64.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/pfc9to5k3q-{0}-5pcucyxosc-5pcucyxosc.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/h0qxm5u0yy-{0}-vjluklws0l-vjluklws0l.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/win2gt64sq-{0}-9juufzcgdk-9juufzcgdk.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/ijuf810ucb-{0}-xp2f0e0rh3-xp2f0e0rh3.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/6o9gthdpke-{0}-ikjxvulr4w-ikjxvulr4w.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/tb98bamshq-{0}-afevzs963z-afevzs963z.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/ffdjjohsnc-{0}-mmp1yy7un5-mmp1yy7un5.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/pn46o4hdgm-{0}-ntzi26y3om-ntzi26y3om.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/4sjayj892b-{0}-9fmja7pljs-9fmja7pljs.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/mm8wr5jb95-{0}-rgycuwl3sw-rgycuwl3sw.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/wmgko3ir4p-{0}-kjm33rwg1a-kjm33rwg1a.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/jq2jihf5fr-{0}-awzanx0pu8-awzanx0pu8.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/uslingtyva-{0}-m0sdc2vg34-m0sdc2vg34.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/2b4v2q74ar-{0}-0b0bj86z40-0b0bj86z40.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/5eye7ha8pe-{0}-e5lgg05xwp-e5lgg05xwp.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/fiqznfocyn-{0}-ki10xp5gks-ki10xp5gks.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/5dcvuemm5a-{0}-s9hcthfn4x-s9hcthfn4x.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/sc7iw8bo2n-{0}-idf8r2y2gj-idf8r2y2gj.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/sbcuig79xm-{0}-btwuipzwbp-btwuipzwbp.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/713i7dud0v-{0}-v95crb0bvb-v95crb0bvb.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/is0nail857-{0}-b0dyrub9as-b0dyrub9as.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/6nn42apl8y-{0}-1dlotxxwer-1dlotxxwer.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/m1yjzwotev-{0}-f8c5bd5212-f8c5bd5212.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/ruk4ibgzyp-{0}-sc1npuf73a-sc1npuf73a.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/kwrall9b0s-{0}-zbg73p58hc-zbg73p58hc.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/m3ffqup1h6-{0}-kz8gc8cxma-kz8gc8cxma.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/3emkb5z5ma-{0}-sd59ooda5f-sd59ooda5f.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/f3doi4qufy-{0}-g5ndc3bl4h-g5ndc3bl4h.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/hp2clcwva9-{0}-a8m5cweeeb-a8m5cweeeb.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/ljiijnwn0n-{0}-13ja33weya-13ja33weya.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/20yq066lo5-{0}-o32v8r49vv-o32v8r49vv.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/jb6cwotjhj-{0}-j8lzlu28q6-j8lzlu28q6.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/55thtf5248-{0}-u1n4jc5v46-u1n4jc5v46.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/pqub0n3e9d-{0}-ewdlgswx1m-ewdlgswx1m.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/6ywlikri93-{0}-dr97trlaug-dr97trlaug.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/compressed/pzf87cbgug-{0}-929e30nm1z-929e30nm1z.gz
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/staticwebassets.build.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/staticwebassets.build.json.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/staticwebassets.development.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/staticwebassets.build.endpoints.json
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/swae.build.ex.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBl.B01550A2.Up2Date
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBlazorApp.dll
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/refint/FluentBlazorApp.dll
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBlazorApp.pdb
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/FluentBlazorApp.genruntimeconfig.cache
|
||||||
|
/home/robert/Documents/repos/azure-web/FluentBlazorApp/obj/Debug/net10.0/ref/FluentBlazorApp.dll
|
||||||
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
4a0b3405016f8e134b9d66964a763eb506030459bbcf2019755888a7180af26b
|
||||||
Binary file not shown.
@@ -0,0 +1,9 @@
|
|||||||
|
// <auto-generated/>
|
||||||
|
namespace Microsoft.Extensions.Validation.Embedded
|
||||||
|
{
|
||||||
|
[global::Microsoft.CodeAnalysis.EmbeddedAttribute]
|
||||||
|
[global::System.AttributeUsage(global::System.AttributeTargets.Class)]
|
||||||
|
internal sealed class ValidatableTypeAttribute : global::System.Attribute
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
GrafanaBlazor/FluentBlazorApp/obj/Debug/net10.0/apphost
Executable file
BIN
GrafanaBlazor/FluentBlazorApp/obj/Debug/net10.0/apphost
Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user