1

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

编辑:试图更好地解释它。

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

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

4

2 回答 2

2

您要使用的是:

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

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


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

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

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

于 2013-05-27T06:46:29.700 回答
0

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

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

于 2013-05-27T08:10:45.440 回答