Here’s a comprehensive list of 100+ ASP.NET Core interview questions along with detailed answers:
Basic Concepts
What is ASP.NET Core?
Answer: ASP.NET Core is a cross-platform, high-performance framework for building modern, cloud-based, and internet-connected applications. It is a complete rewrite of ASP.NET, designed to be modular, lightweight, and to work on multiple platforms, including Windows, Linux, and macOS.
How does ASP.NET Core differ from ASP.NET Framework?
Answer: ASP.NET Core is a completely new framework compared to ASP.NET Framework. It is cross-platform, uses a new runtime (CoreCLR), supports dependency injection by default, and has a more modular architecture. ASP.NET Core applications are also typically more lightweight and have better performance compared to ASP.NET Framework applications.
What are the main features of ASP.NET Core?
Answer: Main features include:
- Cross-platform support (Windows, Linux, macOS).
- Unified programming model for MVC, Web API, and Razor Pages.
- Dependency Injection (DI) is built-in.
- Modular and lightweight.
- Improved performance with Kestrel web server.
- Supports modern development practices like microservices and cloud-native applications.
What is the .NET Core runtime?
Answer: The .NET Core runtime is a cross-platform runtime environment that executes .NET Core applications. It includes the CoreCLR (the runtime execution environment) and CoreFX (the .NET Core library), providing functionalities like garbage collection, JIT compilation, and base class libraries.
What is Kestrel in ASP.NET Core?
Answer: Kestrel is the cross-platform web server used by ASP.NET Core to handle HTTP requests. It is designed to be lightweight and high-performance and can serve as both a stand-alone web server and a reverse proxy server behind a more full-featured web server like IIS or Nginx.
Explain the concept of Middleware in ASP.NET Core.
Answer: Middleware in ASP.NET Core is software that is assembled into an application pipeline to handle requests and responses. Each piece of middleware is responsible for one aspect of the request processing, such as authentication, logging, error handling, or routing.
What is the purpose of the
Startup
class in ASP.NET Core?Answer: The
Startup
class configures the application's services and request pipeline. It contains two primary methods:ConfigureServices
for configuring dependency injection andConfigure
for setting up the middleware pipeline.What is dependency injection and how is it used in ASP.NET Core?
Answer: Dependency Injection (DI) is a design pattern that allows the injection of dependencies into a class rather than having the class create its dependencies. In ASP.NET Core, DI is built into the framework and is used to provide services to classes like controllers, middleware, and other components.
Describe the role of
ConfigureServices
andConfigure
methods in theStartup
class.Answer:
ConfigureServices
is used to register services that are required by the application, such as database contexts, application services, and authentication services.Configure
sets up the middleware pipeline that handles incoming HTTP requests and responses.
What is the difference between
IServiceCollection
andIServiceProvider
?Answer:
IServiceCollection
is used to register services with the dependency injection container.IServiceProvider
is used to resolve services from the container and provides the implementation of registered services.
How do you manage configuration settings in ASP.NET Core?
Answer: Configuration settings in ASP.NET Core are managed through configuration files (
appsettings.json
,appsettings.{Environment}.json
), environment variables, and other sources. TheIConfiguration
interface is used to access these settings in the application.What is the purpose of
appsettings.json
?Answer:
appsettings.json
is a configuration file used to store application settings in a structured format (JSON). It is typically used to store configuration settings that vary between environments, such as connection strings and application settings.Explain the role of
IConfiguration
in ASP.NET Core.Answer:
IConfiguration
provides a way to access configuration settings throughout the application. It allows you to read configuration values from various sources such as JSON files, environment variables, and command-line arguments.How do you implement logging in ASP.NET Core?
Answer: Logging in ASP.NET Core is implemented using the built-in logging framework which provides support for different log providers like Console, Debug, EventSource, and third-party logging frameworks. You can configure logging in
ConfigureServices
and useILogger<T>
to log messages.What is the role of
Program.cs
in an ASP.NET Core application?Answer:
Program.cs
is the entry point of an ASP.NET Core application. It sets up the host for the application, configures services, and runs the application. It typically contains theCreateHostBuilder
method to build and configure the web host.What are ASP.NET Core Filters?
Answer: Filters are components that can run code before or after action methods and handle various aspects of processing, such as authorization, exception handling, and response formatting. They provide a way to inject logic into the MVC request pipeline.
Explain how routing works in ASP.NET Core.
Answer: Routing in ASP.NET Core is the process of mapping incoming HTTP requests to controllers and action methods. The routing system uses route templates defined in the
Startup
class and in controller/action attributes to match URL patterns to request handlers.What is Razor Pages?
Answer: Razor Pages is a page-based programming model in ASP.NET Core for building web applications. It simplifies the development of page-focused scenarios by allowing developers to use a combination of Razor syntax and C# code within a single
.cshtml
file.How do you use Entity Framework Core with ASP.NET Core?
Answer: Entity Framework Core (EF Core) is an Object-Relational Mapper (ORM) that allows you to work with a database using .NET objects. It is used in ASP.NET Core applications by configuring a
DbContext
and registering it in theConfigureServices
method ofStartup
.What is a
DbContext
?Answer:
DbContext
is a class that represents a session with the database and is used to query and save instances of entities. It is a core component of EF Core that manages database connections, tracks changes, and handles CRUD operations.
Intermediate Concepts
What are the different types of Middleware components in ASP.NET Core?
Answer: Types of middleware include:
- Application Middleware: Handles requests and responses, e.g., authentication, authorization.
- Built-in Middleware: Provided by ASP.NET Core, e.g., Static Files, MVC.
- Custom Middleware: User-defined middleware for specific purposes.
How do you use
IOptions<T>
in ASP.NET Core?Answer:
IOptions<T>
is used to access configuration settings represented by a POCO class. You define a class that matches the configuration structure and register it inConfigureServices
usingservices.Configure<T>
. You can then injectIOptions<T>
into classes to access the settings.Explain the concept of action filters and exception filters.
Answer:
- Action Filters: Execute code before or after an action method runs, useful for tasks like logging and modifying request data.
- Exception Filters: Handle exceptions thrown by action methods and can be used to log errors or provide custom error responses.
What are tag helpers and how are they used?
Answer: Tag helpers are a feature in ASP.NET Core MVC that allows you to create server-side logic to generate HTML elements in Razor views. They provide a way to add attributes and behavior to HTML tags in a strongly-typed manner.
How do you create a custom tag helper?
Answer: To create a custom tag helper, you:
- Create a class that inherits from
TagHelper
. - Define properties corresponding to HTML attributes.
- Implement the
Process
method to generate the desired HTML. - Register the tag helper in the view or globally.
- Create a class that inherits from
What is the purpose of
IActionResult
andActionResult<T>
?Answer:
- IActionResult: Represents the result of an action method, allowing you to return various types of responses such as views, JSON, or redirects.
- ActionResult<T>: A generic version of
IActionResult
that is used to return strongly-typed results, often used with Web API to return typed responses.
How does ASP.NET Core handle dependency injection for controller classes?
Answer: ASP.NET Core uses dependency injection to inject services into controller constructors. Services are registered in the
ConfigureServices
method ofStartup
, and the framework automatically resolves and provides these dependencies when creating controller instances.Explain how to use ASP.NET Core Identity for authentication and authorization.
Answer: ASP.NET Core Identity provides a framework for managing user accounts and authentication. You configure Identity in
ConfigureServices
, set up the necessary database tables, and use theSignInManager
andUserManager
classes to handle authentication and user management.What is the purpose of
Configure
method inStartup.cs
?Answer: The
Configure
method is used to set up the middleware pipeline for handling requests. It defines the sequence of middleware components that process requests and responses, such as authentication, routing, and MVC.How does ASP.NET Core handle request and response pipelines?
Answer: ASP.NET Core handles requests and responses through a pipeline of middleware components. Each middleware component has the opportunity to process the request, modify it, pass it to the next middleware, and modify the response before sending it back to the client.
Describe the concept of environment-specific configuration in ASP.NET Core.
Answer: ASP.NET Core allows you to have different configuration settings for different environments (Development, Staging, Production). You can use environment-specific configuration files (e.g.,
appsettings.Development.json
) and environment variables to manage settings for each environment.What are
ViewComponents
and how are they different from partial views?Answer:
- ViewComponents: Are reusable components that generate HTML and can be invoked from views or other view components. They can have their own model and logic.
- Partial Views: Are reusable view templates that do not have their own logic or state and are used to render a segment of a page.
Explain how to implement CORS in ASP.NET Core.
Answer: CORS (Cross-Origin Resource Sharing) is implemented by configuring the CORS middleware in
ConfigureServices
andConfigure
methods. You define CORS policies specifying allowed origins, methods, and headers, and then apply them to the request pipeline.What is SignalR and how is it used in ASP.NET Core?
Answer: SignalR is a library for adding real-time web functionality to applications. It enables server-side code to push content to clients instantly. It is used in ASP.NET Core by configuring SignalR services in
ConfigureServices
and setting up hubs to handle real-time communication.How do you implement custom exception handling in ASP.NET Core?
Answer: Custom exception handling is implemented using exception handling middleware. You can use the
UseExceptionHandler
orUseDeveloperExceptionPage
middleware to handle exceptions, log errors, and provide custom error responses.What is a custom middleware and how do you create one?
Answer: Custom middleware is user-defined middleware that performs specific tasks during request processing. To create one, you implement a class with a
Invoke
orInvokeAsync
method and use theapp.Use
method to register it in the middleware pipeline.How do you configure and use session state in ASP.NET Core?
Answer: Session state is configured by adding session services in
ConfigureServices
and usingapp.UseSession
inConfigure
. You can then use theISession
interface to store and retrieve session data within controllers and other components.Explain how model binding works in ASP.NET Core.
Answer: Model binding in ASP.NET Core maps incoming request data (such as query strings, form data, or route data) to action method parameters or model properties. It automatically binds data based on parameter names and types.
What is the
IHost
interface and how does it relate toIWebHost
?Answer:
IHost
represents a host for any .NET Core application, providing a way to manage application lifecycle and services.IWebHost
is a specialized version ofIHost
used specifically for web applications, providing additional functionality for handling HTTP requests.
How do you implement custom model validation in ASP.NET Core?
Answer: Custom model validation is implemented by creating a class that inherits from
ValidationAttribute
and overriding theIsValid
method. You can then apply this custom attribute to model properties to enforce validation rules.
Advanced Concepts
How do you secure an ASP.NET Core application using JWT tokens?
Answer: JWT (JSON Web Tokens) are used for securing APIs by including a token in the Authorization header. You configure JWT authentication by setting up
JwtBearer
inConfigureServices
, specifying token validation parameters, and adding theAuthorize
attribute to controllers or actions.What is the role of
IWebHostBuilder
andIHostBuilder
?Answer:
IWebHostBuilder
is used to build and configure web-specific hosting environments.IHostBuilder
is used to build and configure general hosting environments, including background services and non-web applications.
Explain the use of
IApplicationBuilder
in ASP.NET Core.Answer:
IApplicationBuilder
is used to configure the request processing pipeline by adding middleware components. It provides methods likeUse
,Run
, andMap
to define how requests are handled and processed by the application.How do you handle background tasks in ASP.NET Core?
Answer: Background tasks are handled using
IHostedService
orBackgroundService
. You implement a class that inherits fromBackgroundService
orIHostedService
and overrides theExecuteAsync
method to run background work.What are the different ways to perform data seeding in Entity Framework Core?
Answer: Data seeding in EF Core can be done using:
- The
HasData
method in theOnModelCreating
method ofDbContext
. - Using
DbContext
directly in theConfigure
method ofStartup
to insert data into the database.
- The
How do you create and use a custom
IServiceCollection
extension method?Answer: You create a static class with an extension method that extends
IServiceCollection
. This method registers custom services or configurations. You call this extension method in theConfigureServices
method ofStartup
.Explain the role of
ConfigureAppConfiguration
in theHostBuilder
.Answer:
ConfigureAppConfiguration
is used to configure the application's configuration sources, such as JSON files, environment variables, or command-line arguments. It allows you to customize how configuration is loaded and managed.How do you implement API versioning in ASP.NET Core?
Answer: API versioning is implemented by configuring the
Microsoft.AspNetCore.Mvc.Versioning
package inConfigureServices
and specifying versioning options. You can then use versioned routes or headers to manage different versions of your API.What is the purpose of
HealthChecks
in ASP.NET Core?Answer: Health checks are used to monitor the health of an application or its dependencies. You configure health checks in
ConfigureServices
and expose them via endpoints. They provide information on the application's health status and are useful for monitoring and diagnostics.How do you implement role-based authorization in ASP.NET Core?
Answer: Role-based authorization is implemented by configuring roles in ASP.NET Core Identity and using the
[Authorize(Roles = "RoleName")]
attribute to restrict access to actions or controllers based on user roles.What are the best practices for securing ASP.NET Core applications?
Answer: Best practices include:
- Use HTTPS for secure communication.
- Implement authentication and authorization using ASP.NET Core Identity.
- Validate and sanitize user input to prevent injection attacks.
- Use secure cookies and session management practices.
- Regularly update dependencies and libraries.
How do you use
IDistributedCache
and when is it beneficial?Answer:
IDistributedCache
provides a way to cache data across multiple servers or instances. It is beneficial in distributed environments where you need to share cached data between different instances or servers, such as in a load-balanced scenario.Explain the concept of
IBackgroundTask
in ASP.NET Core.Answer:
IBackgroundTask
is an interface that represents background work in an application. It is typically implemented usingBackgroundService
orIHostedService
to perform long-running tasks or periodic jobs in the background.How do you integrate third-party services or libraries into an ASP.NET Core application?
Answer: Integration is done by adding the third-party service or library via NuGet packages, configuring it in
ConfigureServices
(if necessary), and using its API or services within your application code.What are the best practices for optimizing ASP.NET Core performance?
Answer: Best practices include:
- Use caching to reduce database calls and improve response times.
- Optimize database queries and use asynchronous operations.
- Minimize the use of synchronous I/O operations.
- Use response compression and static file caching.
- Profile and monitor application performance to identify bottlenecks.
How do you handle file uploads and downloads in ASP.NET Core?
Answer:
- File Uploads: Use
IFormFile
in action methods to handle file uploads. Save the file to the server or cloud storage. - File Downloads: Use
FileResult
to return files from an action method. Set appropriate content types and headers for the file.
- File Uploads: Use
What are
ActionConstraints
and how are they used in routing?Answer:
ActionConstraints
are used to apply constraints on action methods to control when they can be invoked. They are used to limit the routing of requests based on conditions such as HTTP methods or request headers.How do you configure and use Swagger/OpenAPI in ASP.NET Core?
Answer: Swagger/OpenAPI is configured using the
Swashbuckle.AspNetCore
package. Add it toConfigureServices
and configure it inConfigure
to generate API documentation and provide a user interface for testing API endpoints.What are
DbContextOptions
and how are they configured?Answer:
DbContextOptions
represents the configuration settings for aDbContext
, such as connection strings and database provider settings. They are configured using theUseSqlServer
,UseSqlite
, etc., methods inConfigureServices
.How do you implement and manage multi-tenancy in ASP.NET Core?
Answer: Multi-tenancy can be implemented by:
- Using a single database with tenant-specific schemas or tables.
- Using separate databases for each tenant.
- Configuring middleware or services to handle tenant-specific logic based on the request.
Web API Specific
What is the difference between
IActionResult
andActionResult<T>
in Web API?Answer:
- IActionResult: Allows returning different types of results from a controller action, such as views, JSON, or status codes.
- ActionResult<T>: A generic version used to return strongly-typed results, typically in Web API scenarios to return a specific type of data with additional status information.
How do you implement versioning for APIs in ASP.NET Core?
Answer: API versioning is implemented by configuring the
Microsoft.AspNetCore.Mvc.Versioning
package, defining versioned routes, and using attributes or route templates to manage different versions of your API endpoints.What is API Rate Limiting and how can you implement it in ASP.NET Core?
Answer: API Rate Limiting controls the number of requests a client can make within a specified period. It can be implemented using middleware or third-party packages like
AspNetCoreRateLimit
to define rate limits and handle request throttling.Explain the concept of API throttling in ASP.NET Core.
Answer: API throttling is a technique used to control the rate of incoming requests to an API to prevent abuse or overuse. It is implemented by limiting the number of requests a client can make in a given time period and can be configured using middleware or external libraries.
How do you use
IHttpClientFactory
to manage HTTP requests?Answer:
IHttpClientFactory
is used to create and manageHttpClient
instances. It helps in configuring named or typed clients, managing their lifetimes, and handling retries or timeouts. It is registered and configured inConfigureServices
.What is the role of
ApiController
attribute in ASP.NET Core Web API?Answer: The
[ApiController]
attribute is used to denote that a controller is a Web API controller. It provides automatic model validation, binding source parameter inference, and enables attribute-based routing.How do you handle request validation in Web API?
Answer: Request validation is handled through model validation attributes (e.g.,
[Required]
,[Range]
), custom validation attributes, and manual validation in action methods or filters. Model state errors can be checked usingModelState.IsValid
.What are
DataTransferObjects
(DTOs) and how are they used?Answer: DTOs are objects that represent the data transferred between layers or services in an application. They are used to shape and transfer data, often between the API and client applications, to avoid exposing internal data models directly.
Explain how to implement global exception handling in Web API.
Answer: Global exception handling in Web API is implemented using exception handling middleware. Configure it in the
Configure
method usingUseExceptionHandler
to catch and handle exceptions, log them, and return appropriate error responses.How do you perform model validation in Web API?
Answer: Model validation in Web API is performed using data annotations on model properties, custom validation attributes, and manual checks in action methods. Validation results are available through
ModelState
, and invalid models can return error responses.
Security
How do you configure HTTPS in ASP.NET Core?
Answer: HTTPS is configured by enabling it in the
Configure
method usingUseHttpsRedirection
middleware. You also need to configure your development environment with a trusted HTTPS certificate and update settings for production environments accordingly.What is Cross-Site Request Forgery (CSRF) and how is it mitigated in ASP.NET Core?
Answer: CSRF is an attack where unauthorized commands are transmitted from a user that the web application trusts. ASP.NET Core mitigates CSRF by using anti-forgery tokens. These tokens are included in forms and validated by the server.
Explain the use of ASP.NET Core Data Protection API.
Answer: The Data Protection API provides cryptographic operations for protecting data, such as encrypting and decrypting sensitive information. It is used for features like protecting authentication cookies and generating secure tokens.
How do you implement OAuth2 and OpenID Connect in ASP.NET Core?
Answer: OAuth2 and OpenID Connect are implemented using middleware and libraries like
IdentityServer4
orMicrosoft.AspNetCore.Authentication.OpenIdConnect
. Configure authentication services inConfigureServices
and use authentication schemes to manage tokens and user identities.What are
Claims
andRoles
in ASP.NET Core Identity?Answer:
- Claims: Represent user attributes and are used for storing information about the user (e.g., email, age).
- Roles: Represent user roles and are used for authorization purposes to control access to resources based on user roles.
How do you manage and configure authentication schemes in ASP.NET Core?
Answer: Authentication schemes are managed by configuring them in
ConfigureServices
using methods likeAddAuthentication
andAddScheme
. You specify different authentication methods (e.g., cookies, JWT) and their options.What is the purpose of
Authorize
attribute and how is it used?Answer: The
[Authorize]
attribute restricts access to controllers or actions based on the user’s authentication and authorization status. It can be used to specify roles or policies required to access a resource.Explain the role of
IdentityServer4
in ASP.NET Core.Answer:
IdentityServer4
is an OpenID Connect and OAuth2 framework for ASP.NET Core. It provides authentication and authorization services, including single sign-on (SSO), access token issuance, and identity management.How do you implement and use HTTPS Redirection Middleware?
Answer: HTTPS Redirection Middleware is configured in
Configure
usingapp.UseHttpsRedirection()
. It automatically redirects HTTP requests to HTTPS, ensuring secure communication between clients and the server.What are the security considerations for deploying ASP.NET Core applications?
Answer: Considerations include:
- Use HTTPS for secure data transmission.
- Regularly update dependencies and apply security patches.
- Configure proper authentication and authorization.
- Secure sensitive data and manage secrets.
- Enable logging and monitoring for security events.
Performance & Testing
How do you implement caching in ASP.NET Core?
Answer: Caching is implemented using services like
IMemoryCache
for in-memory caching orIDistributedCache
for distributed caching. Configure caching services inConfigureServices
and use them in controllers or services to cache data.What are the different types of caching available in ASP.NET Core?
Answer: Types include:
- In-Memory Caching: Stores data in the server’s memory.
- Distributed Caching: Stores data in a distributed store like Redis or SQL Server.
- Response Caching: Caches responses from the server to reduce processing time for repeated requests.
Explain how to perform load testing on an ASP.NET Core application.
Answer: Load testing is performed using tools like Apache JMeter, k6, or Azure Load Testing. These tools simulate multiple users to test the application’s performance and scalability under load, helping identify bottlenecks and performance issues.
How do you use in-memory caching vs distributed caching?
Answer:
- In-Memory Caching: Best for scenarios where cache data is local to a single instance of the application, providing fast access but limited to a single server.
- Distributed Caching: Suitable for applications running on multiple servers or instances, as it provides a centralized cache accessible from all instances.
What is the role of
BenchmarkDotNet
in performance testing?Answer:
BenchmarkDotNet
is a library for benchmarking and performance testing .NET code. It provides accurate and reliable performance measurements by running benchmarks and analyzing execution times and other performance metrics.How do you use xUnit for testing ASP.NET Core applications?
Answer: xUnit is a testing framework used for writing and running tests. You create test classes and methods using xUnit attributes (e.g.,
[Fact]
,[Theory]
) and use dependency injection to test ASP.NET Core components and services.Explain the concept of integration testing in ASP.NET Core.
Answer: Integration testing involves testing the application’s components together to ensure they work correctly in an integrated environment. It typically involves testing the application’s endpoints, services, and interactions with external systems.
How do you mock dependencies in unit tests for ASP.NET Core?
Answer: Dependencies are mocked using libraries like Moq or NSubstitute. You create mock objects that simulate the behavior of real dependencies and inject them into the class under test, allowing you to test the class in isolation.
What are
Mock
andFake
objects and how are they used in testing?Answer:
- Mock Objects: Used to simulate the behavior of real objects in unit tests, allowing you to set expectations and verify interactions.
- Fake Objects: Provide a simple implementation of an interface or class, often used in tests where you need a working implementation but do not want to use the real implementation.
How do you handle database migrations in Entity Framework Core?
Answer: Database migrations are managed using the
dotnet ef
CLI commands or the Package Manager Console. You create migrations withAdd-Migration
, apply them withUpdate-Database
, and manage schema changes over time.What are the benefits of using a repository pattern in ASP.NET Core applications?
Answer: The repository pattern provides a way to manage data access logic, making it easier to maintain, test, and replace data sources. It abstracts data operations, promoting separation of concerns and improving code organization.
Explain the use of dependency injection in testing ASP.NET Core applications.
Answer: Dependency injection (DI) allows you to provide mock implementations or test-specific services during testing. You configure DI in the test environment to inject mock services, enabling isolated testing of components and services.
How do you ensure the quality of code in ASP.NET Core applications?
Answer: Ensure code quality by following best practices like code reviews, writing unit and integration tests, using static code analysis tools, adhering to coding standards, and applying design patterns and principles.
What is the purpose of
TestServer
in ASP.NET Core testing?Answer:
TestServer
is used for integration testing by creating an in-memory server to test the application’s HTTP endpoints and middleware without the need for a full web server. It allows for testing the application’s behavior in a controlled environment.How do you manage configuration settings for different environments in tests?
Answer: Configuration settings for tests are managed by providing test-specific configuration files or environment variables. You can use the
IConfiguration
interface to load different settings based on the environment or test context.
Deployment & DevOps
How do you deploy an ASP.NET Core application to Azure?
Answer: Deploy to Azure using Azure App Service, Azure Functions, or Azure Kubernetes Service. You can deploy via Visual Studio, Azure DevOps, or the Azure CLI, configuring app settings and connection strings as needed.
What is
Docker
and how is it used with ASP.NET Core?Answer: Docker is a platform for containerizing applications. With ASP.NET Core, you can create Docker images of your application, define a Dockerfile, and deploy the container to any environment that supports Docker.
How do you set up CI/CD pipelines for ASP.NET Core applications?
Answer: Set up CI/CD pipelines using tools like Azure DevOps, GitHub Actions, or Jenkins. Configure pipelines to automate build, test, and deployment processes, ensuring continuous integration and delivery of your application.
Explain the role of
Azure DevOps
in managing ASP.NET Core projects.Answer: Azure DevOps provides a suite of tools for managing the lifecycle of ASP.NET Core projects, including version control, build and release pipelines, project management, and collaboration features.
How do you monitor and log ASP.NET Core applications in production?