使用服务器.业务层中的MapPath



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

我可以在业务层中使用Server.MapPath来获取App_Data文件夹的物理路径。但我希望避免在业务层中引用System.Web

是否有其他方法可以在业务层中获得通往App_Data的路径?

处理此问题的正确方法是让表示层将路径传递到业务层。

换句话说,拥有业务层的目的是在ui和业务流程之间创建关注点分离。如果您强迫业务流程了解ui层,那么您就违反了关注点的分离。

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

有很多方法不违反关注点分离。

您可以使用

string  path = System.AppDomain.CurrentDomain.BaseDirectory+"App_Data";
string path = HostingEnvironment.MapPath("~\App_Data");

它适用于我

我知道这是一个老问题,但仍然是一个非常有效的问题。我在这里看到了所有的答案,我想在这里写下最好的知识笔记。

  1. 建议不要使用System.Web组件,因为它与S.O.L.I.D原则相冲突例如,如果我们使用System.Web并尝试在Windows窗体/控制台/WPF应用程序中使用该DLL,那么在该场景中上下文将始终保持为空
  2. 例如,您可以访问文件夹App_data下的data.txt文件。在DLL中,您应该使用以下代码

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

与其手动用引号和"\"附加路径和文件名,不如使用路径。在C#中组合方法(如上面的代码所示)。

相关内容

  • 没有找到相关文章

最新更新