2013-05-27 12 views
1

在多人和几个组件(Web应用程序,服务应用程序和其他组件)之间执行项目。我们将在Web应用程序的Content文件夹中存储一些信息,以便它可以通过href直接从Web服务器访问,但是Web应用程序之外的其他组件也需要访问此文件夹,并且由于我们共享多人之间使用绝对路径的项目不是一种选择。我们有什么选择?如何获取ASP.NET内容相对路径

编辑:试图解释它好一点。

我确切的是,一个Web项目,一个“数据项目”,这只是一个DLL,一个“逻辑”项目,这是另一个DLL和服务项目,这是一个EXE /服务。 Web项目和服务项目都使用逻辑中的方法以及数据项目中的逻辑。作为最后一个负责存储数据的数据库和文件系统。 这个“文件系统”路径应该是可配置的,我们打算把它放到web项目的内容文件夹中,这样多媒体文件可以直接访问,而不是做一个字节流。

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

+0

我们需要访问里面的代码文件/目录,这是web项目中的特定文件夹内。而使用绝对路径是行不通的。 – user1777914

+0

你可以添加一些关于你真正想要在你的项目中做什么的示例代码吗? –

+0

显示代码有点难,但基本上,我有一个web项目和一个dll项目,负责处理数据。这个DLL需要找到/存储数据的路径,而这个DLL将从Web应用程序以及其他服务应用程序调用,因此它需要成为绝对路径。然而,由于我们是从事该项目的少数人,我们无法真正为每个人使用绝对路径。 – user1777914

回答

2

要使用什么是:

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

这会给你此基础上的文件的绝对路径的位置在网站内,在这种情况下,从/ Content目录。


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

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

另外,还有一个Microsoft .NET程序集,它可以让您轻松访问IIS信息(我无法从头顶回忆它的名字!)。您可以使用此程序集查找相应的网站,并检索其根目录。我会看看我是否可以找到它并获得一个例子,或者别人会看到这个信息并发布一个答案。

+0

这可以在Web服务器内部工作,但外部项目(即服务项目)也需要这个路径吗?查询Web服务器的路径并不是真正的选择。 – user1777914

+0

@ user1777914我发布了对ya的更新。 –

+0

理想情况下,它将是一个指向绝对路径的配置文件中的值,但是当开发我们每个人时应该改变该值并且永远不提交它。不确定svn是否支持“不提交行” – user1777914