如何在 n 层 mvc 应用程序 VS2015 中访问 json 文件
How to access a json file in an n-tier mvc application VS2015
我有一个包含多个项目的 visual studio 解决方案,包括一个服务项目(业务逻辑)和一个 MVC UI 项目(演示)。
在服务项目中,我有一个 json 文件,我需要在其中一个服务项目 类 中访问该文件。
我遇到的问题是,几乎所有我尝试的东西都 returns UI 项目的路径(不是 json 文件所在的位置)
我尝试过的事情:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "geo.json");
//returns a path contained within UI project
HttpContext.Current.Server.MapPath("~/geo.json");
// also returns a path contained within UI project
Environment.CurrentDirectory;
// returns C:\Program Files (x86)\IIS Express
如何获取未包含在 UI 项目中的 json 文件的路径?
由于 "service project" 是一个 class 库,因此您实际上不能对 class 库的路径做任何事情。
class 库在编译时转换为 .dll
文件,并复制到引用它的项目的 bin 文件夹中(也在编译时)。
因此,当服务项目中的代码询问它 运行 来自哪里时,它 returns 引用它的代码的位置,因为那是 .dll
文件结束的地方向上。
我希望这能说得通。如果能用手偶的话说明起来就容易多了,不过markdown目前还不支持搞笑道具的使用
正如 Frank 在上面的评论中提到的,您可以通过选择文件的属性并选择 "Copy to output directory" 来让服务项目中的其他文件也复制到 bin 文件夹中。如果您对 geo.json 文件执行此操作,它将最终位于 bin
文件夹中。
或者,在 MVC 应用程序中,您可以将 geo.json
文件的路径作为参数传递到 .dll
的方法中。这样就由调用者知道信息存储在哪里。
我有一个包含多个项目的 visual studio 解决方案,包括一个服务项目(业务逻辑)和一个 MVC UI 项目(演示)。
在服务项目中,我有一个 json 文件,我需要在其中一个服务项目 类 中访问该文件。
我遇到的问题是,几乎所有我尝试的东西都 returns UI 项目的路径(不是 json 文件所在的位置)
我尝试过的事情:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "geo.json");
//returns a path contained within UI project
HttpContext.Current.Server.MapPath("~/geo.json");
// also returns a path contained within UI project
Environment.CurrentDirectory;
// returns C:\Program Files (x86)\IIS Express
如何获取未包含在 UI 项目中的 json 文件的路径?
由于 "service project" 是一个 class 库,因此您实际上不能对 class 库的路径做任何事情。
class 库在编译时转换为 .dll
文件,并复制到引用它的项目的 bin 文件夹中(也在编译时)。
因此,当服务项目中的代码询问它 运行 来自哪里时,它 returns 引用它的代码的位置,因为那是 .dll
文件结束的地方向上。
我希望这能说得通。如果能用手偶的话说明起来就容易多了,不过markdown目前还不支持搞笑道具的使用
正如 Frank 在上面的评论中提到的,您可以通过选择文件的属性并选择 "Copy to output directory" 来让服务项目中的其他文件也复制到 bin 文件夹中。如果您对 geo.json 文件执行此操作,它将最终位于 bin
文件夹中。
或者,在 MVC 应用程序中,您可以将 geo.json
文件的路径作为参数传递到 .dll
的方法中。这样就由调用者知道信息存储在哪里。