Skip to content
This repository was archived by the owner on Apr 8, 2020. It is now read-only.

Commit 44f86eb

Browse files
Fix webpack HMR proxying logic for apps running on non-root URLs (e.g., full IIS virtual directories)
1 parent 22ff88a commit 44f86eb

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/Microsoft.AspNetCore.SpaServices/Webpack/ConditionalProxyMiddleware.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ public ConditionalProxyMiddleware(
2828
string pathPrefix,
2929
ConditionalProxyMiddlewareOptions options)
3030
{
31+
if (!pathPrefix.StartsWith("/"))
32+
{
33+
pathPrefix = "/" + pathPrefix;
34+
}
35+
3136
_next = next;
3237
_pathPrefix = pathPrefix;
3338
_options = options;
@@ -65,7 +70,7 @@ private async Task<bool> PerformProxyRequest(HttpContext context)
6570

6671
requestMessage.Headers.Host = _options.Host + ":" + _options.Port;
6772
var uriString =
68-
$"{_options.Scheme}://{_options.Host}:{_options.Port}{context.Request.PathBase}{context.Request.Path}{context.Request.QueryString}";
73+
$"{_options.Scheme}://{_options.Host}:{_options.Port}{context.Request.Path}{context.Request.QueryString}";
6974
requestMessage.RequestUri = new Uri(uriString);
7075
requestMessage.Method = new HttpMethod(context.Request.Method);
7176

src/Microsoft.AspNetCore.SpaServices/Webpack/WebpackDevMiddleware.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ public static void UseWebpackDevMiddleware(
101101
// plus /__webpack_hmr is proxied with infinite timeout, because it's an EventSource (long-lived request).
102102
foreach (var publicPath in devServerInfo.PublicPaths)
103103
{
104+
appBuilder.UseProxyToLocalWebpackDevMiddleware(publicPath + hmrEndpoint, devServerInfo.Port, Timeout.InfiniteTimeSpan);
104105
appBuilder.UseProxyToLocalWebpackDevMiddleware(publicPath, devServerInfo.Port, TimeSpan.FromSeconds(100));
105106
}
106-
appBuilder.UseProxyToLocalWebpackDevMiddleware(hmrEndpoint, devServerInfo.Port, Timeout.InfiniteTimeSpan);
107107
}
108108

109109
private static void UseProxyToLocalWebpackDevMiddleware(this IApplicationBuilder appBuilder, string publicPath, int proxyToPort, TimeSpan requestTimeout)

0 commit comments

Comments
 (0)