diff --git a/README.md b/README.md index 7681501f..e11ec82b 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,6 @@ To use it, add a setting like this to appsettings ```json "FileWSDL": { "UrlOverride": "", - "SchemeOverride": "", "VirtualPath": "", "WebServiceWSDLMapping": { "Service.asmx": { @@ -94,7 +93,6 @@ To use it, add a setting like this to appsettings ``` * UrlOverride - can be used to override the URL in the service description. This can be useful if you are behind a firewall. -* SchemeOverride - can be used to override the HTTP Scheme in the service description. This can be useful if you are behind a firewall and the firewall sets the X-Forwarded-Host header, but the internal HTTP scheme is not the same as the external. * VirualPath - can be used if you like to add a path between the base URL and service. * WebServiceWSDLMapping * UrlOverride - can be used to override the URL for a specific WSDL mapping. This can be useful if you want to host different services under different folder. diff --git a/src/SoapCore/SoapEndpointMiddleware.cs b/src/SoapCore/SoapEndpointMiddleware.cs index 0b8b59e4..4b9421d5 100644 --- a/src/SoapCore/SoapEndpointMiddleware.cs +++ b/src/SoapCore/SoapEndpointMiddleware.cs @@ -4,7 +4,6 @@ using System.IO; using System.Linq; using System.Net; -using System.Net.Http; using System.Net.Http.Headers; using System.Reflection; using System.Runtime.CompilerServices; @@ -21,7 +20,6 @@ using Microsoft.AspNetCore.WebUtilities; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Microsoft.Extensions.Primitives; using SoapCore.DocumentationWriter; using SoapCore.Extensibility; @@ -986,7 +984,16 @@ private MetaFromFile GetMeta(HttpContext httpContext) meta.WSDLFolder = mapping.WSDLFolder; meta.XsdFolder = mapping.SchemaFolder; - meta.ServerUrl = options.GetServerUrl(httpContext); + + if (options.UrlOverride != string.Empty) + { + meta.ServerUrl = options.UrlOverride; + } + else + { + meta.ServerUrl = httpContext.Request.Scheme + "://" + httpContext.Request.Host + "/"; + } + return meta; } @@ -1065,9 +1072,16 @@ private async Task ProcessMetaFromFile(HttpContext httpContext, bool showDocumen meta.CurrentWebService = mapping.UrlOverride; } - meta.WSDLFolder = mapping.WSDLFolder; meta.XsdFolder = mapping.SchemaFolder; - meta.ServerUrl = options.GetServerUrl(httpContext); + meta.WSDLFolder = mapping.WSDLFolder; + if (options.UrlOverride != string.Empty) + { + meta.ServerUrl = options.UrlOverride; + } + else + { + meta.ServerUrl = httpContext.Request.Scheme + "://" + httpContext.Request.Host + "/"; + } string wsdlfile = mapping.WsdlFile; diff --git a/src/SoapCore/WSDLFileOptions.cs b/src/SoapCore/WSDLFileOptions.cs index cd87af2c..502b3639 100644 --- a/src/SoapCore/WSDLFileOptions.cs +++ b/src/SoapCore/WSDLFileOptions.cs @@ -1,4 +1,3 @@ -using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; @@ -8,27 +7,8 @@ public class WsdlFileOptions { public virtual Dictionary WebServiceWSDLMapping { get; set; } = new Dictionary(); public string UrlOverride { get; set; } - public string SchemeOverride { get; set; } public string VirtualPath { get; set; } public string AppPath { get; set; } - - public virtual string GetServerUrl(HttpContext httpContext) - { - if (!string.IsNullOrEmpty(UrlOverride)) - { - return UrlOverride; - } - - string scheme = string.IsNullOrEmpty(SchemeOverride) ? httpContext.Request.Scheme : SchemeOverride; - string host = httpContext.Request.Host.ToString(); - var forwardedHost = httpContext.Request.Headers["X-Forwarded-Host"]; - if (forwardedHost.Count != 0) - { - host = forwardedHost[0]; - } - - return scheme + "://" + host + "/"; - } } public class WsdlFileOptionsCaseInsensitive : WsdlFileOptions