This is a lib for integrating a Vite app in an aspnet or aspnet core app. Aspnet app provides the backend while a Vite SPA app provides the frontend.
Add the NuGet package Soukoku.AspNetCore.ViteIntegration
, then
in the typical Program.cs file, register it with
var builder = WebApplication.CreateBuilder(args);
// depends on the actual dev server url
builder.Services.AddViteManifest("https://localhost:3000");
In a controller method that should serve the SPA view, use "VuePage"
and give it a VitePageMvcModel
.
[HttpGet("{*anyPath}")]
public ActionResult Index(string? anyPath = null)
{
var model = new VitePageMvcModel
{
Entry = "src/main.ts",
UseAntiforgery = true, // if necessary
PageData = new // as needed
{
Property = "howdy"
}
};
return View("VuePage", model);
}
Run the typical npm run dev
in your vite app folder, then debug in aspnet as usual.
Add the NuGet package Soukoku.AspNet.Mvc.ViteIntegration
, then
in the typical RouteConfig.cs file, register it with.
// assuming "dist" output content is placed in site root
var manifestPath = HostingEnvironment.MapPath("~/.vite/manifest.json");
// depends on the actual dev server url
routes.MapViteSpaProxy(manifestPath, "https://localhost:3000");
In a controller method that should serve the SPA view, use "VuePage"
and give it a VitePageMvcModel
.
public ActionResult Index()
{
var model = new VitePageMvcModel
{
Entry = "src/main.ts",
UseAntiforgery = true, // if necessary
PageData = new // as needed
{
Property = "howdy"
}
};
return View("VuePage", model);
}
For dev time, ensure these are in the web.config file
<!--used by spa dev proxy to allow : in url-->
<location path="@id">
<system.web>
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,\,?" />
</system.web>
</location>
<!--allow path with file extensions to be handled by spa dev proxy-->
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Run the typical npm run dev
in your vite app folder, then debug in aspnet as usual.
A more complete example is in the repo.