European ASP.NET 4.5 Hosting BLOG

BLOG about ASP.NET 4, ASP.NET 4.5 Hosting and Its Technology - Dedicated to European Windows Hosting Customer

European ASP.NET Core 10.0 Hosting - HostForLIFE :: The Complete Guide to ASP.NET Core Observability and Resilience

clock June 15, 2026 07:09 by author Peter

Developing a local application is just the first step. What occurs in production is the real litmus test for software engineering. How fast can you identify the underlying problem when a null reference exception ends a user session, a third-party API rate-limits your server, or a database query hangs?

Diagnosing problems in a distributed system is like trying to identify a needle in a haystack if you rely on simple text files and dispersed try/catch sections. Three pillars must be mastered in order to create an enterprise-grade ASP.NET Core application that is really resilient: Centralized Log Aggregation, the Middleware Pipeline, and Structured Logging. Let's investigate how to put this architecture into practice.

Phase 1: The Foundation for Observability (Structured Logging)
Treating logging as a means of writing text to a console is the most common error made by developers.
The String Interpolation Anti-Pattern:

_logger.LogInformation($"User {userId} successfully authenticated at {DateTime.Now}");

This generates a flat string. When you have millions of logs, you cannot easily query your database for "all logs where the UserId was 123".

The Best Practice (Structured Logging):
_logger.LogInformation("User {UserId} successfully authenticated.", userId);

By using message templates ({UserId}), ASP.NET Core preserves the property names and their values. Your logging provider stores UserId as an indexed, queryable column.
Applying Structured Logging Layer-by-Layer

To make an application truly observable, logging must be treated as a first-class citizen across all layers:

  • Controllers (The Entry Point): Log who is making the request and what the outcome is. If an Admin locks a user's account, capture the Admin's ID, not just the target user's ID, to create a secure audit trail.
  • Services (The Business Logic): Log the intent and outcome of external integrations. When calling third-party gateways, catch specific exceptions (like HttpRequestException) and log them, so you don't mistake a firewall block for a bug in your own code. Never log secrets, API keys, or passwords.
  • Repositories (The Database Frontier): Log the execution of queries. During logging audits, you will often find performance anti-patterns. For example, replacing a synchronous .FirstOrDefault() with an asynchronous .FirstOrDefaultAsync() prevents catastrophic thread-pool starvation under heavy load. Always log the Exception object in your catch blocks so stack traces aren't swallowed.

Phase 2: Mastering the Control Flow (Middleware)
Before an HTTP request ever reaches your Controller, it travels through the Middleware Pipeline. Think of middleware like a series of water filters. Each component can examine the request, modify it, pass it to the next component, or "short-circuit" and immediately return a response.

Because each middleware wraps the next one, the order in which you register them in Program.cs is critical.

Global Exception Handling (Must be first to catch errors from everything below it)

  • HTTPS Redirection & Static Files
  • Routing (Figure out where the request is going)
  • Authentication (Who are you?)
  • Authorization (Are you allowed to be here?)
  • Custom Middleware (e.g., API Key Validation)
  • Controllers / Endpoints


Phase 3: The Ultimate Safety Net (Global Exception Handling)
Sprinkling try/catch blocks inside every single Controller action makes your code messy and prone to data leakage. Instead, we use the Middleware Pipeline to build a Global Exception Handler.

By placing this middleware at the absolute top of the pipeline, it wraps the entire application in a try/catch. If any code throws an unhandled exception, it bubbles up to this middleware, which logs the exact error and returns a clean, standardized JSON response to the client—without leaking sensitive stack traces.
public class GlobalExceptionMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILogger<GlobalExceptionMiddleware> _logger;

    public GlobalExceptionMiddleware(RequestDelegate next, ILogger<GlobalExceptionMiddleware> logger)
    {
        _next = next;
        _logger = logger;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        try
        {
            await _next(context); // Pass request down the pipeline
        }
        catch (Exception ex)
        {
            // The request blew up somewhere, and the error bubbled back up to here!
            context.Response.ContentType = "application/json";
            context.Response.StatusCode = 500; // Default to Internal Server Error

            // Map specific exceptions to HTTP Status Codes
            if (ex is UnauthorizedAccessException) context.Response.StatusCode = 401;
            if (ex is KeyNotFoundException) context.Response.StatusCode = 404;

            // Log the structured error
            _logger.LogError(ex, "Unhandled exception on {RequestPath}. Method: {RequestMethod}", context.Request.Path, context.Request.Method);

            // Return a safe, standard JSON response
            var errorResponse = JsonSerializer.Serialize(new {
                Status = context.Response.StatusCode,
                Message = "An unexpected error occurred."
            });
            await context.Response.WriteAsync(errorResponse);
        }
    }
}


To see exactly how a request flows through the pipeline and how exceptions bubble up to be caught by this middleware, you can run the interactive simulation below.

Phase 4: The Centralized Brain (Serilog)
Now that your application is emitting beautiful structured logs and gracefully catching every exception, you need a place to view them. Local text files are useless in a multi-server production environment.

We integrate Serilog to aggregate these logs and ship them to a centralized platform (like Seq, Datadog, or Elasticsearch). Because we used standard ILogger everywhere, we don't need to change our business logic; we just wire Serilog into Program.cs using the Two-Stage Initialization pattern.

  • Install Packages: Serilog.AspNetCore, Serilog.Sinks.Console, Serilog.Sinks.Seq (or File).
  • Configure appsettings.json: Define your log levels and routing destinations without hardcoding them.
  • Bootstrap in Program.cs: Catch startup errors and replace noisy default HTTP logging with clean, single-line logs.

using Serilog;
// 1. Catch startup errors before the app even builds
Log.Logger = new LoggerConfiguration().WriteTo.Console().CreateBootstrapLogger();

try
{
    var builder = WebApplication.CreateBuilder(args);

    // 2. Wire Serilog into the ASP.NET Core host
    builder.Host.UseSerilog((context, services, configuration) => configuration
        .ReadFrom.Configuration(context.Configuration)
        .Enrich.FromLogContext());

    var app = builder.Build();

    // 3. Register our safety net FIRST
    app.UseMiddleware<GlobalExceptionMiddleware>();

    // 4. Clean, single-line HTTP Request Logging
    app.UseSerilogRequestLogging();

    app.UseRouting();
    app.MapControllers();
    app.Run();
}
catch (Exception ex)
{
    Log.Fatal(ex, "Host terminated unexpectedly");
}
finally
{
    Log.CloseAndFlush();
}


Conclusion

You can turn your application from a brittle black box into a highly observable, robust enterprise system by integrating Structured Logging, a thorough grasp of the Middleware Pipeline, a Global Exception Handler, and Serilog. You won't be speculating when the unavoidable production problem arises. Your consolidated dashboard will receive precise, queryable context, enabling you to find and fix the underlying issue in a matter of minutes.

HostForLIFE.eu ASP.NET Core 10.0 Hosting
European best, cheap and reliable ASP.NET hosting with instant activation. HostForLIFE.eu is #1 Recommended Windows and ASP.NET hosting in European Continent. With 99.99% Uptime Guaranteed of Relibility, Stability and Performace. HostForLIFE.eu security team is constantly monitoring the entire network for unusual behaviour. We deliver hosting solution including Shared hosting, Cloud hosting, Reseller hosting, Dedicated Servers, and IT as Service for companies of all size.



European ASP.NET Core 10.0 Hosting - HostForLIFE :: OpenTelemetry in.NET: Complete Observability for Contemporary Uses

clock June 10, 2026 07:23 by author Peter

Applications in the modern era are no longer straightforward monolithic systems. Microservices, APIs, cloud resources, databases, message queues, and third-party integrations are frequently used in today's software to provide business functionality. Although this architecture increases flexibility and scalability, troubleshooting becomes much more difficult.

Developers need to see what's going on throughout the system when an application starts to lag or malfunction. Because it is difficult to see how requests flow between services or pinpoint performance bottlenecks, traditional logging by itself is frequently insufficient.

OpenTelemetry can help with this. With a uniform approach to gathering telemetry data, including logs, metrics, and traces, OpenTelemetry has emerged as the industry standard for observability. OpenTelemetry helps teams diagnose problems more quickly and increase system reliability by giving developers in the.NET ecosystem end-to-end visibility into application activity.

In this article, you'll learn what OpenTelemetry is, why observability matters, how OpenTelemetry works in .NET applications, and best practices for implementing effective observability.
What Is OpenTelemetry?
OpenTelemetry is an open-source observability framework that provides standardized APIs, SDKs, and tools for collecting telemetry data.

It helps developers capture three key observability signals:

  • Traces
  • Metrics
  • Logs

These signals work together to provide a complete view of application health and performance.

Instead of relying on vendor-specific monitoring solutions, OpenTelemetry offers a vendor-neutral approach that can integrate with various monitoring platforms.

The basic workflow looks like this:
Application
      ↓
OpenTelemetry SDK
      ↓
Telemetry Data
      ↓
Monitoring Platform


This standardized approach simplifies observability across different environments and technologies.

Understanding the Three Pillars of Observability
Traces

Tracing follows a request as it moves through multiple services.

Consider an e-commerce application:
User Request
      ↓
API
      ↓
Order Service
      ↓
Database
      ↓
Payment Service

Distributed tracing allows developers to see exactly where time is being spent and identify failures across service boundaries.

Metrics
Metrics provide numerical measurements about application behavior.

Examples include:

  • Request count
  • Response time
  • Error rate
  • CPU usage
  • Memory consumption

Metrics help teams monitor trends and detect potential problems before users are affected.

Logs
Logs provide detailed records of application events.

Examples include:

  • Exceptions
  • Warnings
  • Authentication failures
  • Business events

While traces show request flow and metrics show trends, logs provide detailed context.

Together, these three signals create a comprehensive observability strategy.

Why OpenTelemetry Matters for .NET Applications

Many organizations operate distributed systems built with:

  • ASP.NET Core APIs
  • Microservices
  • Azure services
  • Background workers
  • Containerized workloads

Without observability, diagnosing issues becomes difficult.

Common challenges include:

  • Slow API responses
  • Database bottlenecks
  • Service communication failures
  • Unexpected exceptions
  • Resource consumption spikes

OpenTelemetry helps developers quickly identify root causes by providing visibility across the entire application ecosystem.

Installing OpenTelemetry Packages
To get started, install the required packages.
dotnet add package OpenTelemetry.Extensions.Hosting

dotnet add package OpenTelemetry.Instrumentation.AspNetCore


dotnet add package OpenTelemetry.Instrumentation.Http

dotnet add package OpenTelemetry.Exporter.Console

These packages enable telemetry collection and export capabilities.

Configuring OpenTelemetry in ASP.NET Core
Register OpenTelemetry during application startup.

builder.Services.AddOpenTelemetry()
    .WithTracing(tracing =>
    {
        tracing
            .AddAspNetCoreInstrumentation()
            .AddHttpClientInstrumentation()
            .AddConsoleExporter();
    });


This configuration automatically captures:

  • Incoming HTTP requests
  • Outgoing HTTP requests
  • Request durations
  • Trace information

Developers immediately gain visibility into application activity.

Understanding Distributed Tracing
Distributed tracing is one of OpenTelemetry's most valuable capabilities.

Imagine a request flowing through multiple services.
Client
   ↓
API Gateway
   ↓
Product Service
   ↓
Inventory Service
   ↓
Database


Without tracing, identifying performance issues requires examining logs across multiple systems.

With distributed tracing:
Trace ID
   ↓
Entire Request Journey

Developers can follow a request from start to finish and quickly locate bottlenecks.

This is especially useful in microservices architectures.

Collecting Metrics

Metrics help monitor system health over time.

Add metrics support:
builder.Services.AddOpenTelemetry()
    .WithMetrics(metrics =>
    {
        metrics
            .AddAspNetCoreInstrumentation()
            .AddHttpClientInstrumentation()
            .AddRuntimeInstrumentation()
            .AddConsoleExporter();
    });


Common metrics include:

  • Request duration
  • Throughput
  • Memory usage
  • Garbage collection activity

These measurements help teams understand application performance trends.

Custom Tracing

In addition to automatic instrumentation, developers can create custom traces.

Example:
using System.Diagnostics;

var activitySource =
    new ActivitySource("OrderProcessing");

using var activity =
    activitySource.StartActivity("CreateOrder");

activity?.SetTag("OrderId", 1001);

Custom tracing is useful for:

  • Business workflows
  • Order processing
  • Payment operations
  • Inventory updates

This provides visibility into application-specific processes.

Exporting Telemetry Data
OpenTelemetry collects telemetry data, but organizations typically send it to monitoring platforms.

The workflow becomes:

Application
      ↓
OpenTelemetry
      ↓
Collector
      ↓
Monitoring Platform


This flexibility is one of OpenTelemetry's biggest advantages.

Teams can change monitoring vendors without rewriting application instrumentation.

OpenTelemetry and Microservices

Observability becomes increasingly important as systems grow.
Consider a microservices environment:

API Gateway
     ↓
User Service
     ↓
Order Service
     ↓
Payment Service
     ↓
Notification Service

A failure in any component can affect the user experience.

OpenTelemetry helps answer questions such as:

  • Which service is slow?
  • Where did the error occur?
  • How long did each operation take?
  • Which dependency is causing issues?

Without observability, answering these questions can take hours.

With OpenTelemetry, answers are often available within minutes.

Best Practices
Instrument Early

Add observability during development rather than after deployment.

Retrofitting telemetry later is often more difficult.

Use Automatic Instrumentation

Leverage built-in instrumentation whenever possible.
This reduces implementation effort and ensures consistency.

Add Business-Level Traces
Technical telemetry is important, but business workflows should also be traced.

Examples include:

  • Order creation
  • Payment processing
  • User registration

These traces provide valuable operational insights.

Monitor Critical Metrics

Focus on metrics that directly impact users:

  • Latency
  • Error rates
  • Throughput
  • Availability

Avoid collecting unnecessary data.

Standardize Naming

Use consistent names for:

  • Services
  • Activities
  • Metrics
  • Tags

Consistency improves troubleshooting and reporting.

Protect Sensitive Information
Never expose:

  • Passwords
  • Access tokens
  • Personal information

through telemetry data.

Observability should enhance visibility without creating security risks.

HostForLIFE.eu ASP.NET Core 10.0 Hosting
European best, cheap and reliable ASP.NET hosting with instant activation. HostForLIFE.eu is #1 Recommended Windows and ASP.NET hosting in European Continent. With 99.99% Uptime Guaranteed of Relibility, Stability and Performace. HostForLIFE.eu security team is constantly monitoring the entire network for unusual behaviour. We deliver hosting solution including Shared hosting, Cloud hosting, Reseller hosting, Dedicated Servers, and IT as Service for companies of all size.



European ASP.NET Core 10.0 Hosting - HostForLIFE :: How Claude AI Can Be Integrated with .NET Applications?

clock June 8, 2026 07:14 by author Peter

Artificial intelligence is quickly taking center stage in contemporary software applications. .NET developers can now create intelligent chatbots, document processing systems, AI assistants, code generation tools, and enterprise automation solutions with Anthropic's Claude API. The entire process of incorporating Claude AI into an ASP.NET Core application using C# will be covered in this tutorial. You will discover how to set up the API, develop reusable services, manage requests, and make AI features available via REST endpoints.

Creating a New ASP.NET Core Project
Create a new Web API project:
dotnet new webapi -n ClaudeAIIntegration
cd ClaudeAIIntegration

Run the project:
dotnet run

Install Required Packages
Add the following packages:
dotnet add package Microsoft.Extensions.Http
dotnet add package Newtonsoft.Json


Configure Claude API Settings
Add configuration to appsettings.json:
{
  "ClaudeAI": {
    "ApiKey": "YOUR_API_KEY",
    "BaseUrl": "https://api.anthropic.com/v1/messages",
    "Model": "claude-sonnet-4-0"
  }
}


Create a configuration model:
public class ClaudeSettings
{
    public string ApiKey { get; set; }
    public string BaseUrl { get; set; }
    public string Model { get; set; }
}


Create Request Models
ClaudeRequest.cs
public class ClaudeRequest
{
    public string Prompt { get; set; }
}


ClaudeResponse.cs
public class ClaudeResponse
{
    public string Content { get; set; }
}


Build Claude AI Service
Create Services/ClaudeService.cs
using System.Text;
using Newtonsoft.Json;

public class ClaudeService
{
    private readonly HttpClient _httpClient;
    private readonly IConfiguration _configuration;

    public ClaudeService(
        HttpClient httpClient,
        IConfiguration configuration)
    {
        _httpClient = httpClient;
        _configuration = configuration;
    }

    public async Task<string> GetResponseAsync(string prompt)
    {
        var apiKey = _configuration["ClaudeAI:ApiKey"];
        var model = _configuration["ClaudeAI:Model"];
        var endpoint = _configuration["ClaudeAI:BaseUrl"];

        _httpClient.DefaultRequestHeaders.Clear();

        _httpClient.DefaultRequestHeaders.Add(
            "x-api-key",
            apiKey);

        _httpClient.DefaultRequestHeaders.Add(
            "anthropic-version",
            "2023-06-01");

        var requestBody = new
        {
            model = model,
            max_tokens = 1024,
            messages = new[]
            {
                new
                {
                    role = "user",
                    content = prompt
                }
            }
        };

        var json =
            JsonConvert.SerializeObject(requestBody);

        var content =
            new StringContent(
                json,
                Encoding.UTF8,
                "application/json");

        var response =
            await _httpClient.PostAsync(
                endpoint,
                content);

        response.EnsureSuccessStatusCode();

        return await response.Content.ReadAsStringAsync();
    }
}

Register Services
Update Program.cs:
builder.Services.AddHttpClient();
builder.Services.AddScoped<ClaudeService>();


Create API Controller
Controllers/ClaudeController.cs

using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class ClaudeController : ControllerBase
{
    private readonly ClaudeService _claudeService;

    public ClaudeController(
        ClaudeService claudeService)
    {
        _claudeService = claudeService;
    }

    [HttpPost]
    public async Task<IActionResult> Ask(
        ClaudeRequest request)
    {
        var result =
            await _claudeService
                .GetResponseAsync(
                    request.Prompt);

        return Ok(result);
    }
}

Test the Endpoint
POST Request:

POST /api/claude


Request Body:
{
  "prompt": "Explain dependency injection in .NET"
}


Response:
{
  "content": "Dependency Injection is a design pattern..."
}


Implement Error Handling
Add try-catch blocks for production readiness:
try
{
    var result =
        await _claudeService
            .GetResponseAsync(prompt);

    return result;
}
catch(Exception ex)
{
    _logger.LogError(ex.Message);
    throw;
}


Add Dependency Injection Pattern

Define interface:
public interface IClaudeService
{
    Task<string> GetResponseAsync(
        string prompt);
}

Register:
builder.Services.AddScoped<
    IClaudeService,
    ClaudeService>();


Implement Streaming Responses
For real-time chat applications, use Claude's streaming API to deliver token-by-token responses to the frontend.

Benefits:

  • Lower perceived latency
  • Better user experience
  • Improved chatbot interactions
  • Real-time AI assistants

Rate Limiting

Protect API endpoints:
builder.Services.AddRateLimiter(options =>
{
    options.AddFixedWindowLimiter(
        "ClaudeLimiter",
        config =>
        {
            config.PermitLimit = 20;
            config.Window =
                TimeSpan.FromMinutes(1);
        });
});


Logging and Monitoring

Implement:

  • Serilog
  • Application Insights
  • OpenTelemetry

Response Caching

Reduce API costs by caching repeated prompts.

Common Use Cases
1. AI Chatbots
Customer support and virtual assistants.

2. Document Analysis
Process contracts, invoices, and reports.

3. Knowledge Base Search
Combine Claude with vector databases and RAG architecture.

4. Content Generation
Generate technical documentation and reports.

5. Internal Enterprise Assistants
Provide intelligent access to company knowledge.

Conclusion

Integrating Claude AI with .NET enables developers to build sophisticated AI-powered applications with minimal effort. By leveraging ASP.NET Core, HttpClient, dependency injection, and secure configuration practices, teams can rapidly deploy production-ready solutions powered by Anthropic's advanced language models.

Whether you're building chatbots, document intelligence systems, AI copilots, or enterprise automation platforms, Claude AI and .NET provide a scalable foundation for modern intelligent applications.

HostForLIFE.eu ASP.NET Core 10.0 Hosting
European best, cheap and reliable ASP.NET hosting with instant activation. HostForLIFE.eu is #1 Recommended Windows and ASP.NET hosting in European Continent. With 99.99% Uptime Guaranteed of Relibility, Stability and Performace. HostForLIFE.eu security team is constantly monitoring the entire network for unusual behaviour. We deliver hosting solution including Shared hosting, Cloud hosting, Reseller hosting, Dedicated Servers, and IT as Service for companies of all size.



European ASP.NET Core 10.0 Hosting - HostForLIFE :: Using .NET Aspire for Cloud Native Microservice Development

clock June 2, 2026 08:55 by author Peter

For creating observable, production-ready distributed applications,.NET Aspire offers tools, templates, and packages. It is developed locally using unified tooling, built using a code-first app approach, and deployed anywhere on your servers, Kubernetes, or the cloud.

Building blocks of .NET Aspire
Smart Defaults

.NET Aspire provides a set of smart defaults for services that are commonly used in .NET applications. These defaults are designed to help you get started quickly and provide a consistent experience across different types of applications. This includes:

  • Telemetry: Metrics, Tracing, Logging
  • Resiliency
  • Health Checks
  • Service Discovery

Developer Dashboards
The dashboard enables real-time tracking of key aspects of your app, including logs, traces, and environment configurations. It’s designed to enhance the development experience by providing a clear and insightful view of your app’s state and structure.

Key features of the dashboard include:

  • Real-time tracking of logs, traces, and environment configurations.
  • User interface to stop, start and restart the resources.
  • Collects and displays logs and telemetry.
  • Enhanced debugging with Github copilot

Orchestration
Orchestration in .NET Aspire is all about automating how your microservices are started, scaled, and managed. If you’ve ever struggled with manually writing Dockerfiles or hooking up multiple services in a docker-compose file, this is where .NET Aspire helps.

Service Discovery
The method that enables services to dynamically find and interact with one another during runtime is called service discovery. In the Aspire application paradigm, services register themselves and may be found by name instead of depending on fixed URLs or ports.

Because service discovery in.NET Aspire eliminates the need to hardcode or manually swap base URLs between local, development, and production configurations, applications become environment-agnostic. Logical names (like "api") are used by services to interact, and Aspire uses composite schemes (like "https+http://api/") to dynamically resolve the actual endpoint at runtime, preferring HTTPS and reverting to HTTP as necessary. This method guarantees that the same configuration functions consistently across many settings, facilitates cloud-native and containerized deployments, and streamlines service-to-service communication.


Integration
Aspire provides the suites of nuget packages to easily connect the cloud-native applications with popular services like databases, caches and messaging platforms. It simplifies configuration, orchestration and automatically observability and health checks.

Integrations are added as NuGet Packages. Almost all the popular platform like SQL Server, PostgreSQL, Redis, Cosmos DB, MySQL, Azure Functions, RabbitMQ, OpenAI, Java, Go etc. are available for the integration via NuGet Packages

Deployment
There two main approaches for the deployment using Azure Developer CLI for Azure integration and generating artifacts for other platforms like kubernetes or Docker Compose.

Two main steps are involved for the deployment.

Publishing (Generating Assets): with aspire publish command, the application model defined in AppHost will be transformed into environment-specific parameterized assets like Docker Compose files or Kubernetes manifests.

Deployment (Applying Changes): The aspire deploy command resolves the parameter and applies the generated artifacts to the target environment.
Step by step: Creating and Deploying the .NET Aspire application

Step 1: Create an Aspire Starter Application
Open Visual Studio 2022, click Create a new project, and select Aspire Starter App.


Provide a project name and choose a location to save it.


Once created, Visual Studio generates a solution containing four projects:

AppHost
This is the orchestrator project and the entry point of the entire application when run locally. Its primary function is to define, connect, and configure all the different services and infrastructure resources (like databases or caches) within the solution using C# code instead of complex configuration files.

ServiceDefaults
This is a shared project that centralizes common configurations for cross-cutting concerns like resilience (automatic retries), service discovery, health checks, and telemetry (logging, metrics, and distributed tracing). Other service projects reference this project to inherit these enterprise-ready defaults, ensuring consistency without duplicating code in every service.

ApiService
This project is an ASP.NET Core Minimal API project that provides a backend data source to the frontend. It is a standard service project that consumes the configurations from the ServiceDefaults project.

Web

This project is typically an ASP.NET Core Blazor application (or other frontend types depending on the exact template used) that serves as the user interface. It interacts with the ApiService and also benefits from the shared configurations in the ServiceDefaults project.

Step 2: Run the Application
By default, AppHost is set as the startup project. Run the solution.


When the application starts, you are redirected to the Aspire Dashboard. Here, you can see the running resources, the API service and the Web application.

The dashboard provides rich observability features, including:

  • Resources overview
  • Console output
  • Structured logs
  • Distributed traces
  • Metrics

Step 3: Integrate External Service (Redis) into the Application
To add Redis, right-click on the AppHost project and select Add > .NET Aspire Package.

Search for Redis and install the required package Aspire.Hosting.Redis

Next, update the AppHost configuration to add Redis and Redis Commander, and link it to the API service:
var cache = builder.AddRedis("cache").WithRedisCommander();

var apiService = builder.AddProject<Projects.AspireApp_ApiService>("apiservice")
    .WithReference(cache)
    .WithHttpHealthCheck("/health");


Step 4: Run and Verify Third party integration Services (Redis)
Run the AppHost project again.


You will now see two additional services in the Aspire Dashboard:
cache: the Redis in-memory data store
rediscommander: a web-based graphical user interface for managing Redis data

Both services run automatically in Docker Desktop. If you open Docker Desktop, you can see the Redis containers running.


By browsing to Redis Commander, you can view, manage, and inspect data stored in Redis using a user-friendly UI.


Other external infrastructure services like Microsoft SQL Server, PostgreSQL, and message brokers like RabbitMQ can be easily integrated using the same methodology as Redis.NET Aspire offers packages for these technologies, enabling their addition to the AppHost with little code while automatically managing service discovery, configuration, and local container orchestration.

HostForLIFE.eu ASP.NET Core 10.0 Hosting
European best, cheap and reliable ASP.NET hosting with instant activation. HostForLIFE.eu is #1 Recommended Windows and ASP.NET hosting in European Continent. With 99.99% Uptime Guaranteed of Relibility, Stability and Performace. HostForLIFE.eu security team is constantly monitoring the entire network for unusual behaviour. We deliver hosting solution including Shared hosting, Cloud hosting, Reseller hosting, Dedicated Servers, and IT as Service for companies of all size.



About HostForLIFE.eu

HostForLIFE.eu is European Windows Hosting Provider which focuses on Windows Platform only. We deliver on-demand hosting solutions including Shared hosting, Reseller Hosting, Cloud Hosting, Dedicated Servers, and IT as a Service for companies of all sizes.

We have offered the latest Windows 2016 Hosting, ASP.NET Core 2.2.1 Hosting, ASP.NET MVC 6 Hosting and SQL 2017 Hosting.


Month List

Tag cloud

Sign in