我已从 Git 将 ASP.NET MVC 6 网站部署到 Azure。部署详情可参见this blog post但基本上我使用 DNU 发布它,然后使用 kudu 将其推送到 Azure 网站。
使用IHostingEnvironment
我得到了ApplicationBasePath。问题是我返回的路径在本地主机和 Azure 上非常不同。
Azure:“D:\home\site\approot\src\src”
本地主机:“C:\Users\deebo\Source\mysite\site\src”
我想使用基本路径来获取包含一些图像的文件夹的完整路径:wwwroot/img/gallery/
我用以下代码解决了这个问题:
var rootPath = _appEnvironment.ApplicationBasePath;
var pathFix = "../../../";
if(_hostingEnvironment.IsDevelopment())
{
pathFix = string.Empty;
}
var imagesPath = Path.Combine(rootPath, pathFix, "wwwroot", "img", "gallery");
这可能有效,但看起来很老套。
我的部署方法是否会对此产生影响?
有没有更一致的方法来获取应用程序路径?
最佳答案
您可以使用IHostingEnvironment.WebRootPath
。来自 Asp 5 deep dive :
The
IHostingEnvironment
services gives you access to the Web root path for your application (typically your www folder) and also an IFileProvider abstraction for your Web root.
这样你就可以获取wwwroot路径甚至直接映射一个路径:
var wwwrootPath = env.WebRootPath;
var imagesPath = hostingEnv.MapPath("img/gallery");
PS。我在本地尝试过此操作,而不是在 Azure 上尝试过。但是我没有发现任何有关 Azure 问题的提及。 This answer甚至提到在 Azure 中 IHostingEnvironment.WebRootPath
将指向 D:/Home/site/wwwroot
。
关于c# - 如何在生产和开发环境上一致地获取 ASP.NET 5 DNX 项目的应用程序基路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32631066/