Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 24 additions & 3 deletions dotnet/src/dotnetcore/GxClasses.Web/Middleware/GXRouting.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ internal class GXRouting : IGXRouting
static char[] urlSeparator = { '/', '\\' };
const char QUESTIONMARK = '?';
const string oauthRoute = "/oauth";
const string SvcExtension = ".svc";
const string SvcExtensionPattern = "*.svc";
public static string UrlTemplateControllerWithParms;

//Azure Functions
Expand All @@ -48,6 +50,7 @@ internal class GXRouting : IGXRouting
public Dictionary<String, Dictionary<string, SingleMap>> servicesMap = new Dictionary<String, Dictionary<string, SingleMap>>();
public Dictionary<String, Dictionary<Tuple<string, string>, String>> servicesMapData = new Dictionary<String, Dictionary<Tuple<string, string>, string>>();
public Dictionary<string, List<string>> servicesValidPath = new Dictionary<string, List<string>>();
public HashSet<string> svcFiles;
public string restBaseURL;

public GXRouting(string baseURL)
Expand Down Expand Up @@ -410,9 +413,9 @@ public GxRestWrapper GetController(HttpContext context, ControllerInfo controlle
else
{
string controllerLower = controller.ToLower();
string svcFile = Path.Combine(ContentRootPath, $"{controller}.svc");
if (!File.Exists(svcFile))
svcFile = Path.Combine(ContentRootPath, $"{controllerLower}.svc");
string svcFile = SvcFile($"{controller}{SvcExtension}");
if (svcFile==null)
svcFile = SvcFile($"{controllerLower}{SvcExtension}");
if (File.Exists(svcFile))
{
string[] controllerAssemblyQualifiedName = new string(File.ReadLines(svcFile).First().SkipWhile(c => c != '"')
Expand Down Expand Up @@ -444,6 +447,24 @@ public GxRestWrapper GetController(HttpContext context, ControllerInfo controlle
GXLogging.Warn(log, $"Controller was not found");
return null;
}
string SvcFile(string controller)
{
if (svcFiles == null)
{
svcFiles = new HashSet<string>();
foreach (string file in Directory.GetFiles(ContentRootPath, SvcExtensionPattern, SearchOption.AllDirectories))
{
svcFiles.Add(file);
}
}
string fileName;
string controllerFullName = Path.Combine(ContentRootPath, controller);
if (svcFiles.TryGetValue(new FileInfo(controllerFullName).FullName, out fileName))
return fileName;
else
return null;

}
public void ServicesGroupSetting()
{
try
Expand Down