diff --git a/ElectronNET.API/WindowManager.cs b/ElectronNET.API/WindowManager.cs
index 4ac85dab..bf4ddf06 100644
--- a/ElectronNET.API/WindowManager.cs
+++ b/ElectronNET.API/WindowManager.cs
@@ -6,6 +6,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
+using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ElectronNET.API
@@ -79,7 +80,7 @@ public bool IsQuitOnWindowAllClosed
///
/// The load URL.
///
- public async Task CreateWindowAsync(string loadUrl = "http://localhost")
+ public async Task CreateWindowAsync(string loadUrl = "/")
{
return await CreateWindowAsync(new BrowserWindowOptions(), loadUrl);
}
@@ -90,10 +91,9 @@ public async Task CreateWindowAsync(string loadUrl = "http://loca
/// The options.
/// The load URL.
///
- public Task CreateWindowAsync(BrowserWindowOptions options, string loadUrl = "http://localhost")
+ public Task CreateWindowAsync(BrowserWindowOptions options, string loadUrl = "/")
{
var taskCompletionSource = new TaskCompletionSource();
-
BridgeConnector.Socket.On("BrowserWindowCreated", (id) =>
{
BridgeConnector.Socket.Off("BrowserWindowCreated");
@@ -119,9 +119,9 @@ public Task CreateWindowAsync(BrowserWindowOptions options, strin
}
});
- if (loadUrl.ToUpper() == "HTTP://LOCALHOST")
- {
- loadUrl = $"{loadUrl}:{BridgeSettings.WebPort}";
+ if(!TryParseLoadUrl(loadUrl, out loadUrl))
+ {
+ throw new ArgumentException($"Unable to parse {loadUrl}", nameof(loadUrl));
}
// Workaround Windows 10 / Electron Bug
@@ -159,6 +159,20 @@ public Task CreateWindowAsync(BrowserWindowOptions options, strin
return taskCompletionSource.Task;
}
+
+ private bool TryParseLoadUrl(string loadUrl, out string parsedUrl)
+ {
+ Uri BaseUri = new Uri($"http://localhost:{BridgeSettings.WebPort}");
+ if (Uri.TryCreate(loadUrl, UriKind.Absolute, out var url) ||
+ Uri.TryCreate(BaseUri, loadUrl, out url)) {
+ var uri = new UriBuilder(url.ToString());
+ parsedUrl = uri.ToString();
+ return true;
+ }
+ parsedUrl = loadUrl;
+ return false;
+ }
+
private bool isWindows10()
{
return RuntimeInformation.OSDescription.Contains("Windows 10");