c# - 如何在生产和开发环境上一致地获取 ASP.NET 5 DNX 项目的应用程序基路径?

标签 c# azure asp.net-core-mvc dnx

我已从 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/

相关文章:

c# - 将多个方法重构为一个通用方法

c# - 将 Auth0 与 Umbraco 7 集成以进行成员身份验证

azure - 即使使用 sudo,Yeoman 也会给出权限错误

c# - 在 asp.net core mvc 中,小数的模型绑定(bind)不接受千位分隔符

asp.net - 拥有多个 IdentityUser 对象

c# - 如果使用 C# 表达式(或抛出错误),则在 Visual Studio 中警告开发人员

c# - 如何使用 Facebook(或其他 ID)登录我的 asp.net 应用程序?

c# - 限制/限制 serviceBus 队列以触发 ServiceBusTrigger 形式的消息

Azure Graph API 无法在 userPrincipalAccount 中创建没有域的本地帐户

c# - 在复杂类型上使用 [FromQuery] Name 属性