前面看了asp.net5,小弟就摸索着用了为此,做了只稍网站练习一下,有一个多少模块需要达成污染图片及wwwroot下的images文件夹,但是aspnet5
发生了翻天复地变化,之前获得网站到底目录的之方不再适用。去网上翻遍了章也罢并未找到办法,无奈之下想到看看源码(大神不若出洋相,我呢看无知底,只是胡乱的拘留),终于于我瞅一个类似:

namespace Microsoft.Framework.Runtime
{
    [AssemblyNeutral]
    public interface IApplicationEnvironment
    {
        string ApplicationBasePath { get; }
        string ApplicationName { get; }
        string Configuration { get; }
        FrameworkName RuntimeFramework { get; }
        string Version { get; }
    }

但是这个接口的兑现类似怎么去得呢?经过几西尝试,找到了一个方法:

var approot = Context.ApplicationServices.GetService<IApplicationEnvironment>().ApplicationBasePath;

因取得之应用程序根路径在拼接自己的字符串,就好博到
存放图片的文本夹的路,喜出望外啊,但是连下问题来了,把网站发布之后,目录结构产生了转移,运行报错了,于是想到了project.json这个文件下之第一件:

马上是发布前:”webroot”: “wwwroot”

随即是颁布后:”webroot”:
“../../../../../wwwroot”

这样一来不就颇粗略了嘛,先拿走project.json这个文件,然后抱节点“webroot”,在于之前的拿走到之应用程序根路径也尽管是approot进行拼接不就是好了,方法如下:

var config = new Configuration().AddJsonFile("project.json").AddEnvironmentVariables();
var wwwroot=config.Get<string>("webroot");

但运行起来却报错了,没有权力获取到“project.json”,有的同学会说一直写深不久足了呢,效果如下:

 

var approot = Context.ApplicationServices.GetService<IApplicationEnvironment>().ApplicationBasePath;
 // var wwwroot = approot + "\\wwwroot";//发布前
 var wwrrot = approot + "..\\..\\..\\..\\..\\wwwroot";//发布后

 

 

 

  其实这么啊勉强可以,就是少了接触灵活性,比如像
吧wwwroot目录改名为www(因为买的虚拟空间网站又目录必须为www)就需在代码中再举行修改;不过当下啊绝非再好的不二法门,只能如此做了。

   一次偶然用aspnet
自承测试的时刻,报了一个荒唐:

 json 1

想到了这是为把
wwwroot文件夹改名为www,而project.config里面也没有更改过来(还是wwwroot),这不就是盖找到wwwroot文件夹而报的缪,喜出望外啊,顺藤摸瓜,用反编译软件查看这片只类似,终于看出如下代码:

public HostingEnvironment(IApplicationEnvironment appEnvironment, IEnumerable<IConfigureHostingEnvironment> configures)
        {
            this.EnvironmentName = "Development";
            this.WebRoot = HostingUtilities.GetWebRoot(appEnvironment.get_ApplicationBasePath());
            this.WebRootFileProvider = new PhysicalFileProvider(this.WebRoot);
            using (IEnumerator<IConfigureHostingEnvironment> enumerator = configures.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    enumerator.Current.Configure(this);
                }
            }
        }

哪怕是立即同样句  json this.WebRoot =
HostingUtilities.GetWebRoot(appEnvironment.get_ApplicationBasePath());困扰多日的问题归根到底解决了;完整的取得aspnet5网站
物理文件到底目录的代码如下:

 var approot = Context.ApplicationServices.GetService<IApplicationEnvironment>().ApplicationBasePath;

 var wwwroot = Microsoft.AspNet.Hosting.HostingUtilities.GetWebRoot(approot);

以后结束。

兄弟第一浅写博客,不顶善于表达,望大神们不用怪

 

相关文章

网站地图xml地图