ワンクリックで
shiny-web-hosting
// Generate and configure Shiny Web Hosting for .NET - modular ASP.NET Core application configuration with IWebModule for clean service registration and middleware setup
// Generate and configure Shiny Web Hosting for .NET - modular ASP.NET Core application configuration with IWebModule for clean service registration and middleware setup
| name | shiny-web-hosting |
| description | Generate and configure Shiny Web Hosting for .NET - modular ASP.NET Core application configuration with IWebModule for clean service registration and middleware setup |
| auto_invoke | true |
| triggers | ["IWebModule","AddInfrastructureModules","UseInfrastructureModules","Shiny.Extensions.WebHosting","WebExtensions"] |
You are an expert in Shiny Extensions Web Hosting, a .NET library providing modular ASP.NET Core application configuration via IWebModule.
Invoke this skill when the user wants to:
IWebModuleProgram.cs into focused module classesDocumentation: https://shinylib.net/extensions/webhost/
Repository: https://github.com/shinyorg/Shiny.Extensions
Package: Shiny.Extensions.WebHosting
Namespace: Shiny
public interface IWebModule
{
void Add(WebApplicationBuilder builder); // Register services
void Use(WebApplication app); // Configure middleware
}
Each module implements IWebModule with two methods:
Add(WebApplicationBuilder builder) — register services, configuration, and anything before Build()Use(WebApplication app) — configure middleware, endpoints, and anything after Build()public class SwaggerModule : IWebModule
{
public void Add(WebApplicationBuilder builder)
{
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
}
public void Use(WebApplication app)
{
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
}
}
public class CorsModule : IWebModule
{
public void Add(WebApplicationBuilder builder)
{
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(policy =>
policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
});
}
public void Use(WebApplication app)
{
app.UseCors();
}
}
public class AuthModule : IWebModule
{
public void Add(WebApplicationBuilder builder)
{
builder.Services.AddAuthentication().AddJwtBearer();
builder.Services.AddAuthorization();
}
public void Use(WebApplication app)
{
app.UseAuthentication();
app.UseAuthorization();
}
}
using Shiny;
var builder = WebApplication.CreateBuilder(args);
builder.AddInfrastructureModules(
new SwaggerModule(),
new CorsModule(),
new AuthModule()
);
var app = builder.Build();
app.UseInfrastructureModules();
app.Run();
public static class WebExtensions
{
// Register module instances and call Add() on each
public static WebApplicationBuilder AddInfrastructureModules(
this WebApplicationBuilder builder,
params IEnumerable<IWebModule> modules);
// Call Use() on each module to configure middleware
public static WebApplication UseInfrastructureModules(
this WebApplication app,
params IEnumerable<IWebModule> modules);
}
Add() for service registration and Use() for middleware configurationAddInfrastructureModules() — no assembly scanningUse() follows the order modules are registeredGenerate and configure Shiny Stores for .NET - cross-platform key/value stores with source-generated property binding for mobile, desktop, and Blazor WebAssembly
Generate and configure Shiny MAUI Hosting for .NET - modular MAUI app configuration with IMauiModule, static Host.Services access, IAppSupport (device info + orientation/culture/timezone change events + programmatic orientation lock), and IAppStore (cross-platform store version lookups and deep links for Apple, Google, Microsoft stores)
Generate and configure Shiny DI for .NET - attribute-driven service registration with source generators, keyed services, categories, and multi-interface support
Generate code using Shiny Reflector for AOT-compliant, source-generated property access, JSON serialization, and assembly info generation in .NET applications