使用在使用Server.Mappath业务层(Use Server.MapPath in Busin

2019-07-31 10:16发布

我的业务层创建的文件,需要将它们保存在App_Data我的asp.net MVC 4 Web前端的文件夹中。

我可以用Server.MapPath在业务层获得的物理路径App_Data文件夹中。 但我想避免一个参考System.Web在业务层。

是否有其他方法来获得路径App_Data在业务层?

Answer 1:

处理这个正确的方法是有表示层传递路径到业务层。

对此换一种方式,其业务层的目的是创建的UI和业务流程之间的关注点分离。 如果强制业务流程了解UI层,那么你就违反了担忧分离。

有很多的,你可以解决这个问题的方法。 当业务层构造,比如通过构造函数初始化或通过依赖注入你可以通过路径到业务层。 或者你可以将它传递给方法调用。 或者你可以建立某种形式的包含路径配置文件,您的业务层负载。

有大量的要对此不违反关注点分离的方式。



Answer 2:

您可以使用

string  path = System.AppDomain.CurrentDomain.BaseDirectory+"App_Data";


Answer 3:

string path = HostingEnvironment.MapPath("~\\App_Data");

这个对我有用



Answer 4:

我知道它的一个老问题,但仍然是一个非常有效的一个。 我在这里看到的所有的答案,我希望写的最好的所有的知识在这里说明。

  1. 建议不要使用System.Web组件,它冲突SOLID原则。 例如,如果我们使用System.Web ,并尝试使用该DLL在Windows窗体/控制台/ WPF应用程序,则前后文总是在那种情况下仍然为空。
  2. 例如,您可以要访问data.txt文件夹下的文件App_data文件夹。 在DLL你应该使用下面的代码

    string rootDirectoryPath = AppDomain.CurrentDomain.BaseDirectory; string pathFinalAccessFile = Path.Combine(rootDirectoryPath, "App_Data", "data.txt");

而不是追加的路径和文件名用引号和“\”手动你应该在C#中使用Path.Combine方法(如图码以上)。



文章来源: Use Server.MapPath in Business Layer