我的业务层创建的文件,需要将它们保存在App_Data
我的asp.net MVC 4 Web前端的文件夹中。
我可以用Server.MapPath
在业务层获得的物理路径App_Data
文件夹中。 但我想避免一个参考System.Web
在业务层。
是否有其他方法来获得路径App_Data
在业务层?
我的业务层创建的文件,需要将它们保存在App_Data
我的asp.net MVC 4 Web前端的文件夹中。
我可以用Server.MapPath
在业务层获得的物理路径App_Data
文件夹中。 但我想避免一个参考System.Web
在业务层。
是否有其他方法来获得路径App_Data
在业务层?
处理这个正确的方法是有表示层传递路径到业务层。
对此换一种方式,其业务层的目的是创建的UI和业务流程之间的关注点分离。 如果强制业务流程了解UI层,那么你就违反了担忧分离。
有很多的,你可以解决这个问题的方法。 当业务层构造,比如通过构造函数初始化或通过依赖注入你可以通过路径到业务层。 或者你可以将它传递给方法调用。 或者你可以建立某种形式的包含路径配置文件,您的业务层负载。
有大量的要对此不违反关注点分离的方式。
您可以使用
string path = System.AppDomain.CurrentDomain.BaseDirectory+"App_Data";
string path = HostingEnvironment.MapPath("~\\App_Data");
这个对我有用
我知道它的一个老问题,但仍然是一个非常有效的一个。 我在这里看到的所有的答案,我希望写的最好的所有的知识在这里说明。
System.Web
组件,它冲突SOLID原则。 例如,如果我们使用System.Web
,并尝试使用该DLL在Windows窗体/控制台/ WPF应用程序,则前后文总是在那种情况下仍然为空。 例如,您可以要访问data.txt
文件夹下的文件App_data
文件夹。 在DLL你应该使用下面的代码
string rootDirectoryPath = AppDomain.CurrentDomain.BaseDirectory; string pathFinalAccessFile = Path.Combine(rootDirectoryPath, "App_Data", "data.txt");
而不是追加的路径和文件名用引号和“\”手动你应该在C#中使用Path.Combine方法(如图码以上)。