Getting the application base path from the IoC container.

This commit is contained in:
Praburaj 2014-04-10 14:15:29 -07:00
parent b51f54e98a
commit 1e137c7af9
4 changed files with 50 additions and 48 deletions

View File

@ -0,0 +1,20 @@
using System;
using System.Runtime.Versioning;
namespace Microsoft.Net.Runtime
{
[AssemblyNeutral]
public interface IApplicationEnvironment
{
string ApplicationName { get; }
string Version { get; }
string ApplicationBasePath { get; }
FrameworkName TargetFramework { get; }
}
[AssemblyNeutral]
[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
public sealed class AssemblyNeutralAttribute : Attribute
{
}
}

View File

@ -1,31 +1,32 @@
{
"version": "0.1-alpha-*",
"dependencies": {
"Helios": "0.1-alpha-231",
"Microsoft.AspNet.Abstractions": "0.1-alpha-234",
"Microsoft.AspNet.Mvc": "0.1-alpha-553",
"Helios": "0.1-alpha-243",
"Microsoft.AspNet.Abstractions": "0.1-alpha-239",
"Microsoft.AspNet.Mvc": "0.1-alpha-573",
"Microsoft.AspNet.Razor": "0.1-alpha-181",
"Microsoft.AspNet.ConfigurationModel": "0.1-alpha-174",
"Microsoft.AspNet.DependencyInjection": "0.1-alpha-242",
"Microsoft.AspNet.RequestContainer": "0.1-alpha-234",
"Microsoft.AspNet.Routing": "0.1-alpha-214",
"Microsoft.AspNet.Mvc.ModelBinding": "0.1-alpha-553",
"Microsoft.AspNet.Mvc.Core": "0.1-alpha-553",
"Microsoft.AspNet.Mvc.Razor": "0.1-alpha-553",
"Microsoft.AspNet.StaticFiles": "0.1-alpha-175",
"System.Security.Claims": "0.1-alpha-115",
"Microsoft.AspNet.DependencyInjection": "0.1-alpha-243",
"Microsoft.AspNet.RequestContainer": "0.1-alpha-243",
"Microsoft.AspNet.Routing": "0.1-alpha-220",
"Microsoft.AspNet.Mvc.ModelBinding": "0.1-alpha-573",
"Microsoft.AspNet.Mvc.Core": "0.1-alpha-573",
"Microsoft.AspNet.Mvc.Razor": "0.1-alpha-573",
"Microsoft.AspNet.StaticFiles": "0.1-alpha-180",
"System.Security.Claims": "0.1-alpha-120",
"System.Security.Principal": "4.0.0.0",
"Microsoft.AspNet.Security.DataProtection": "0.1-alpha-142",
"Microsoft.AspNet.Identity": "0.1-alpha-315",
"Microsoft.AspNet.Identity.Entity": "0.1-alpha-315",
"Microsoft.AspNet.Identity.InMemory": "0.1-alpha-315",
"Microsoft.Data.Entity": "0.1-alpha-416",
"Microsoft.Data.Relational": "0.1-alpha-416",
"Microsoft.Data.SqlServer": "0.1-pre-416",
"Microsoft.Data.InMemory": "0.1-alpha-416",
"Microsoft.AspNet.Diagnostics": "0.1-alpha-119",
"Microsoft.AspNet.Hosting": "0.1-alpha-234",
"Microsoft.AspNet.Server.WebListener": "0.1-alpha-168",
"Microsoft.AspNet.Identity": "0.1-alpha-327",
"Microsoft.AspNet.Identity.Entity": "0.1-alpha-327",
"Microsoft.AspNet.Identity.InMemory": "0.1-alpha-327",
"Microsoft.Data.Entity": "0.1-alpha-419",
"Microsoft.Data.Relational": "0.1-alpha-419",
"Microsoft.Data.SqlServer": "0.1-pre-419",
"Microsoft.Data.InMemory": "0.1-alpha-419",
"Microsoft.Data.Migrations": "0.1-alpha-419",
"Microsoft.AspNet.Diagnostics": "0.1-alpha-124",
"Microsoft.AspNet.Hosting": "0.1-alpha-243",
"Microsoft.AspNet.Server.WebListener": "0.1-alpha-180",
"Microsoft.AspNet.Configuration.Json": "0.1-alpha-174"
},
"configurations": {
@ -41,6 +42,7 @@
"System.Collections": "4.0.0.0",
"System.Linq": "4.0.0.0",
"System.Runtime": "4.0.20.0",
"System.Runtime.Extensions": "4.0.10.0",
"System.Dynamic.Runtime": "4.0.0.0",
"System.Threading.Tasks": "4.0.10.0",
"System.ComponentModel": "4.0.0.0",

View File

@ -17,12 +17,13 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Microsoft.Net.Runtime;
public class Startup
{
public void Configuration(IBuilder app)
{
CreateAdminUser();
CreateAdminUser(app.ServiceProvider);
//ErrorPageOptions.ShowAll to be used only at development time. Not recommended for production.
app.UseErrorPage(ErrorPageOptions.ShowAll);
@ -50,11 +51,13 @@ public class Startup
SampleData.InitializeMusicStoreDatabaseAsync().Wait();
}
private async void CreateAdminUser()
private async void CreateAdminUser(IServiceProvider serviceProvider)
{
var applicationEnvironment = serviceProvider.GetService<IApplicationEnvironment>();
var configuration = new Configuration();
configuration.AddEnvironmentVariables(); //If configuration flows through environment we should pick that first
configuration.AddJsonFile(Path.Combine(GetApplicationBasePath(), "Config.json"));
configuration.AddJsonFile(Path.Combine(applicationEnvironment.ApplicationBasePath, "Config.json"));
string _username = configuration.Get("DefaultAdminUsername");
string _password = configuration.Get("DefaultAdminPassword");
@ -78,28 +81,4 @@ public class Startup
await userManager.AddToRoleAsync(user, _role);
}
}
//To find the application base path at runtime.
private static string GetApplicationBasePath()
{
#if NET45
var applicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
#else // CORECLR_TODO: ApplicationBase
var appDomainType = typeof(object)
.GetTypeInfo()
.Assembly
.GetType("System.AppDomain");
var currentAppDomainProperty = appDomainType.GetRuntimeProperty("CurrentDomain");
var currentAppDomain = currentAppDomainProperty.GetValue(null);
var getDataMethod = appDomainType
.GetRuntimeMethod("GetData", new[] { typeof(string) });
string applicationBase = (string)getDataMethod.Invoke(currentAppDomain, new object[] { "APPBASE" });
#endif
return applicationBase;
}
}

View File

@ -45,6 +45,7 @@
"System.Collections": "4.0.0.0",
"System.Linq": "4.0.0.0",
"System.Runtime": "4.0.20.0",
"System.Runtime.Extensions": "4.0.10.0",
"System.Dynamic.Runtime": "4.0.0.0",
"System.Threading.Tasks": "4.0.10.0",
"System.ComponentModel": "4.0.0.0",