【问题标题】:ASP.NET and IIS - Network Directoy access from Business Logic LayerASP.NET 和 IIS - 从业务逻辑层访问网络目录
【发布时间】:2013-03-25 22:45:07
【问题描述】:

我们正在为基于 ASP.NET 4.0 框架和 IIS 6.0 的企业创建网站 - 必须采用最佳模式和实践。

问题:

我们需要在业务逻辑层访问网络目录。

澄清:

我们在一个单独的项目中内置了一个业务逻辑层。我们需要如何访问网络目录内容?是直接 (\XYZ123\folder\folder\file.xml) 还是通过 IIS?

如果是通过IIS,如何访问虚拟目录映射的网络目录——在业务逻辑项目中不能使用Server.MapPath(),因为它属于Page!

如果有其他更好的选择,请告诉我,谢谢,

【问题讨论】:

  • 好吧,你没有遵循最好的“模式和实践”。摆脱 2003 服务器上的 IIS 6,它是古老且不受支持的。至少移到 2008 R2 或 2012。
  • IIS 最终会更新。

标签: asp.net iis


【解决方案1】:

UI层可以使用Server.MapPath()将文件的绝对路径发送给业务逻辑。

【讨论】:

  • 当我已经知道物理路径(业务逻辑层的网络位置)时,通过 IIS 和 Server.MapPath 使用它 - 它有什么意义?
  • 所以你关心的实际上是从哪一层访问文件?如果是这样,业务层或数据层也可以。由于文件 I/O 是一种数据访问,因此数据层是放置它的最佳位置。只要它位于可以模拟/存根以进行测试的单独接口上,就可以了。
【解决方案2】:

请查看此主题:httpcontext.current.server.mappath Object reference not set to an instance of an object

我使用了库中的 system.web.httpcontext.current.mappath(),只要它被您的 Web 应用程序使用,它应该可以工作(您可能需要在项目中添加对 system.web 的引用)。我没有使用他们推荐的 httpruntime 解决方案,但它看起来也很有希望。祝你好运。

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 2012-11-26
    • 1970-01-01
    • 2012-07-06
    • 2013-03-23
    • 2010-10-02
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    相关资源
    最近更新 更多