/// <summary> /// Initializes a new instance of the <see cref="WebServer" /> class. /// </summary> /// <remarks> /// <c>urlPrefixes</c> must be specified as something similar to: http://localhost:9696/ /// Please notice the ending slash. -- It is important. /// </remarks> /// <param name="urlPrefixes">The URL prefix.</param> /// <param name="routingStrategy">The routing strategy.</param> /// <param name="httpListener">The HTTP listener.</param> /// <exception cref="ArgumentException">Argument urlPrefix must be specified.</exception> public WebServer(string[] urlPrefixes, RoutingStrategy routingStrategy, IHttpListener httpListener) { if (urlPrefixes == null || urlPrefixes.Length <= 0) { throw new ArgumentException("At least 1 URL prefix in urlPrefixes must be specified"); } $"Running HTTPListener: {httpListener.GetType()}".Info(nameof(WebServer)); RoutingStrategy = routingStrategy; Listener = httpListener; foreach (var prefix in urlPrefixes) { var urlPrefix = new string(prefix?.ToCharArray()); if (urlPrefix.EndsWith("/") == false) { urlPrefix = urlPrefix + "/"; } urlPrefix = urlPrefix.ToLowerInvariant(); Listener.AddPrefix(urlPrefix); $"Web server prefix '{urlPrefix}' added.".Info(nameof(WebServer)); } "Finished Loading Web Server.".Info(nameof(WebServer)); }
void OnAfterUnRegister(IHttpListener listner) { var type = listner.GetType(); var methods = listner.GetType().GetMethods(); foreach (var m in methods) { if (m.DeclaringType != type) continue; RemoveEvent(listner, m); } }
void OnAfterRegister(IHttpListener listner) { var methods = listner.GetType().GetMethods(); var type = listner.GetType(); foreach (var m in methods) { if (m.DeclaringType != type) continue; try { AddEvent(listner, m); } catch (Exception e) { e.Handle(); } } }