Creating a Web Server on Windows IoT Core

This tutorial guides you through the process of setting up and running a basic web server directly on your Windows IoT Core device. This is a fundamental step for creating interactive and remotely controllable IoT applications.

Why a Web Server?

A web server on your IoT device allows you to:

Prerequisites

Steps to Create a Web Server

1. Create a New Project in Visual Studio

Open Visual Studio and create a new project. Select the ASP.NET Core Web Application template. Choose Web Application for the project type and ensure you select a suitable .NET version (e.g., .NET 6.0 or later).

Name your project something descriptive, like IoTWebServer.

2. Understand the Project Structure

An ASP.NET Core Web Application project typically includes:

3. Implement a Simple Web Page

Let's create a basic "Hello, IoT!" page. Navigate to the Pages folder and open Index.cshtml. Replace its content with the following:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>IoT Web Server</title>
    <style>
        body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 20px; background-color: #f4f4f4; color: #333; }
        h1 { color: #0078d4; }
        .status { font-weight: bold; color: #107c10; }
    </style>
</head>
<body>
    <h1>Welcome to Your Windows IoT Web Server!</h1>
    <p>This page is served from your IoT device.</p>
    <p>Device Status: <span class="status">Online</span></p>
</body>
</html>

You can also create a corresponding Index.cshtml.cs file in the same folder to handle server-side logic, but for this simple example, it's not strictly necessary.

4. Configure the Application Pipeline

Ensure your application is configured to serve static files and Razor Pages. In Startup.cs (or Program.cs for .NET 6+), make sure you have:

// For .NET 6+ in Program.cs
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles(); // Ensures wwwroot is served

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

5. Deploy to Your Windows IoT Core Device

In Visual Studio, change the deployment target from "Local" to your Windows IoT Core device. You can do this by:

  1. Clicking the dropdown next to the green "Start" button.
  2. Selecting "Browse Local App Data".
  3. Navigating to the "Remote Machine" option.
  4. Entering your device's IP address or hostname.
  5. Setting the deployment mode to "Remote Machine".

Note: Ensure your device is discoverable and accessible on the network.

6. Run and Access the Web Server

Build and deploy your application to the IoT device. Once deployed, the web server will start automatically. You can then access it by navigating to http://<your-device-ip-address> in any web browser on the same network.

Tip: Static IP Address

It's highly recommended to assign a static IP address to your Windows IoT Core device to ensure consistent access to your web server.

Next Steps

From here, you can expand your web server functionality:

This basic web server is a powerful foundation for building sophisticated IoT applications.