From c47d6d0c78520ec04c1e5b5cc35ee2afb851e5c2 Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Mon, 15 Sep 2014 14:54:56 -0700 Subject: [PATCH] #74 - Parse the project.json file with Newtonsoft directly. --- .../HostingUtilities.cs | 23 +++++++++++-------- src/Microsoft.AspNet.Hosting/project.json | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/Microsoft.AspNet.Hosting/HostingUtilities.cs b/src/Microsoft.AspNet.Hosting/HostingUtilities.cs index 873fd87f8c..2f1eeb6826 100644 --- a/src/Microsoft.AspNet.Hosting/HostingUtilities.cs +++ b/src/Microsoft.AspNet.Hosting/HostingUtilities.cs @@ -17,7 +17,8 @@ using System; using System.IO; -using Microsoft.Framework.ConfigurationModel; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; namespace Microsoft.AspNet.Hosting { @@ -38,17 +39,19 @@ namespace Microsoft.AspNet.Hosting public static string GetWebRoot(string applicationBasePath) { - try + var webroot = applicationBasePath; + using (var stream = File.OpenRead(Path.Combine(applicationBasePath, "project.json"))) { - var config = new Configuration(); - config.AddJsonFile(Path.Combine(applicationBasePath, "project.json")); - var webroot = config.Get("webroot") ?? string.Empty; - return Path.GetFullPath(Path.Combine(applicationBasePath, webroot)); - } - catch (Exception) - { - return applicationBasePath; + using (var reader = new JsonTextReader(new StreamReader(stream))) + { + var project = JObject.Load(reader); + if (project.TryGetValue("webroot", out var token)) + { + webroot = Path.Combine(applicationBasePath, token.ToString()); + } + } } + return Path.GetFullPath(webroot); } } } diff --git a/src/Microsoft.AspNet.Hosting/project.json b/src/Microsoft.AspNet.Hosting/project.json index de0e1d5305..bcf21cbd0b 100644 --- a/src/Microsoft.AspNet.Hosting/project.json +++ b/src/Microsoft.AspNet.Hosting/project.json @@ -6,10 +6,10 @@ "Microsoft.AspNet.PipelineCore": "1.0.0-*", "Microsoft.AspNet.Security.DataProtection": "1.0.0-*", "Microsoft.Framework.ConfigurationModel": "1.0.0-*", - "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-*", "Microsoft.Framework.DependencyInjection": "1.0.0-*", "Microsoft.Framework.Logging": "1.0.0-*", - "Microsoft.Framework.Runtime.Interfaces": "1.0.0-*" + "Microsoft.Framework.Runtime.Interfaces": "1.0.0-*", + "Newtonsoft.Json": "6.0.4" }, "frameworks": { "aspnet50": {},