【问题标题】:How do I get the ASP.NET content relative path如何获取 ASP.NET 内容相对路径
【发布时间】:2013-05-27 05:54:42
【问题描述】:

在多人和几个组件(网络应用程序、服务应用程序和其他一些)之间进行项目。我们将在 Web 应用程序的 Content 文件夹中存储一些信息,以便可以使用 href 从 Web 服务器直接访问它,但是 Web 应用程序之外的其他组件也需要访问此文件夹,因为我们正在共享多人之间使用绝对路径的项目不是一种选择。我们有什么选择?

编辑:试图解释得更好一点。

我所拥有的正是一个 Web 项目、一个只是 dll 的“数据项目”、一个作为另一个 dll 的“逻辑”项目和一个作为 exe/服务的服务项目。 Web 项目和服务项目都使用来自逻辑的方法,以及来自数据项目的逻辑。作为最后一个负责存储数据(在数据库中)和文件系统中的人。 这个“文件系统”路径应该是可配置的,我们的目标是把它放到 web 项目的内容文件夹中,这样就可以直接访问多媒体文件,而不是做一个字节流。

现在在 web.config(web 应用程序的配置文件)和 app.config(服务应用程序的配置文件)中,我可以设置 web/content 的绝对路径(两个配置文件相同)和data dll 可以毫无问题地使用它。现在的主要问题是我们不能在配置文件中放置绝对路径,因为每个人都在不同的计算机上工作,文件路径明显不同。因此,如果我可以在配置文件中编写类似: ~/project/Web/Content 而不是 C:/myfolder/stuff/blabla/project/web/content 的内容,并通过 ~ 解析项目的路径,这就是我想!或者关于如何在不添加硬编码的绝对路径的情况下与这些应用共享文件夹的更好想法。

【问题讨论】:

  • 我们需要访问代码中的文件/目录,这些文件/目录位于 web 项目的特定文件夹中。而且使用绝对路径是行不通的。
  • 您能否添加一些示例代码,说明您真正想在项目中做什么?
  • 显示代码有点困难,但基本上,我有一个 web 项目和一个负责处理数据的 dll 项目。此 dll 需要找到/存储数据的路径,并且此 dll 将从 Web 应用程序和其他服务应用程序调用,因此它需要是绝对路径。然而,由于我们是几个人在做这个项目,我们不能真正为每个人都使用绝对路径。
  • 在设计方面,该 dll 不应引用 Request 或 Server 对象。实际上,它所需要的只是:如何解析路径或根文件夹在哪里。因此,我会创建一个接口:IResolvePath { string Resolve() }。然后对于每个 Web 项目/服务,您可以提供正确的实现。
  • 我不认为这会完成我正在寻找的东西。阅读我的编辑,我试图更好地解释它。

标签: asp.net mappath


【解决方案1】:

你要使用的是:

Server.MapPath("/Content/filepath.ext");

这将根据文件在网站中的位置为您提供文件的绝对路径,在这种情况下,来自 /Content 目录。


对于网站外部的程序,您有几个选择;

最容易实现的可能是外部程序中指向目录的简单配置值。我的猜测是您已经确定这并不理想,但这可能是最快的方法。

另外,还有一个 Microsoft .NET 程序集,可让您轻松访问 IIS 信息(我想不起来它的名字了!)。您可以使用此程序集找到适当的网站,并检索其根目录。我会看看我是否能找到它并获得一个示例,或者也许其他人会看到这个并发布带有该信息的答案。

【讨论】:

  • 这可以在网络服务器内部工作,但是对于同样需要这条路径的外部项目(即服务项目)呢?查询网络服务器的路径并不是一个真正的选择。
  • 理想情况下,它是配置文件中指向绝对路径的值,但是在开发过程中,我们每个人都应该更改该值并且永远不要提交它。不确定 svn 是否支持“不提交一行”
【解决方案2】:

请检查以下方法“ResolveClientUrl” MSDN 使用 ResolveClientUrl 方法返回一个适合客户端使用的 URL 字符串,用于访问 Web 服务器上的资源,例如图像文件、指向其他页面的链接等。

http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveclienturl.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多