2017-02-24 75 views
1

我有一个包含多个项目(包括服务项目(业务逻辑)和MVC UI项目(演示文稿))的Visual Studio解决方案。如何访问n层mvc应用程序中的json文件VS2015

在服务项目中,我有一个json文件,需要在其中一个服务项目类中访问。

我的问题是,几乎所有的东西我尝试返回到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文件的路径?

+0

什么样的项目是'服务项目'?它是一个类库(一个.dll)吗? –

+0

它是一个类库。 – user3626232

+0

当你部署时,你的类库的JSON最终会在你的用户界面的文件夹结构中(很可能在'bin'中)。您需要右键单击类库中的JSON文件,选择“属性”并将“复制到输出目录”更改为任一复制选项。 –

回答

0

由于“服务项目”是一个类库,你不能真正做任何相对于类库路径的任何事情。

在编译时将类库转换为.dll文件,并将其复制到引用它的项目的bin文件夹中(也在编译时)。

因此,当服务项目中的代码询问它从哪里运行时,它将返回引用它的代码的位置,因为那是.dll文件最终的位置。

我希望这可以让你有一定的感觉。如果我可以使用手偶,解释起来会容易得多,但降价目前不支持使用有趣的道具。

正如弗兰克在上面的评论中提到的那样,您可以通过选择文件的属性并选择“复制到输出目录”来告诉服务项目中的其他文件也被复制到bin文件夹中。如果你这样做到你的geo.json文件,它将在bin文件夹中结束。

或者,在MVC应用程序中,可以将geo.json文件的路径作为参数传递给.dll的方法。这样,由调用者知道信息的存储位置。

+0

(请记住,我是作为初级开发人员提问)考虑到这种情况,是否有另一种类型的项目应该用于包含我的业务逻辑? – user3626232

+0

好的..试图放在足够的细节是有用的。让我知道任何不清楚的行话。 –

+0

谢谢你,现在确实有道理,我从来没有遇到过这种情况。我想通过webapi暴露JSON可能会更好,而不是在bin文件夹中不断更新/访问它。 – user3626232

相关问题