在多人和一些组件(网络应用,服务应用和其他一些组件)之间进行项目。我们将在Web应用程序的Content文件夹中存储一些信息,以便可以使用href直接从Web服务器访问它,但Web应用程序之外的其他组件也需要访问此文件夹,因为我们正在共享使用绝对路径的多人之间的项目不是一种选择。我们有什么选择?
编辑:试着更好地解释一下。
我确切地说,一个网络项目,一个“数据项目”,它只是一个dll,一个“逻辑”项目,它是另一个dll和一个服务项目,它是一个exe / service。 Web项目和服务项目都使用逻辑中的方法和数据项目中的逻辑。作为最后一个负责存储数据(在数据库中)以及文件系统中的数据。 这个“文件系统”路径应该是可配置的,我们的目标是将它放入Web项目的内容文件夹中,这样就可以直接访问多媒体文件而不是字节流。
现在在web.config(web应用程序的配置文件)和app.config(服务应用程序的配置文件)中,我可以设置web / content的绝对路径(两个配置文件都相同)和数据dll会毫无问题地使用它。现在主要问题是我们不能在配置文件中放置绝对路径,因为每个人在具有明显不同文件路径的不同计算机上工作。所以,如果我可以在配置文件中写出类似:〜/ project / Web / Content而不是C:/ myfolder / stuff / blabla / project / web / content的内容,用〜解析项目的路径,这就是我的意思想!或者可能更好的想法如何与这些应用程序共享文件夹,而无需在某处添加硬编码的绝对路径。
答案 0 :(得分:2)
您想要使用的是:
Server.MapPath("/Content/filepath.ext");
这将根据文件在网站中的位置(在本例中为/ Content目录)为您提供文件的绝对路径。
对于网站外部的程序,您有几个选项;
最容易实现的可能是外部程序中指向目录的简单配置值。我的猜测是你已经确定这不是理想的,但它可能是最快捷的方式。
或者,有一个Microsoft .NET程序集,可以让您轻松访问IIS信息(我无法回想起它的名字!)。您可以使用此程序集查找相应的网站,并检索其根目录。我会看看我是否能找到它并得到一个例子,或者其他人会看到这个并发布有关该信息的答案。
答案 1 :(得分:0)
请检查以下方法“ResolveClientUrl” MSDN 使用ResolveClientUrl方法返回适合客户端使用的URL字符串,以访问Web服务器上的资源,例如图像文件,指向其他页面的链接等。
http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveclienturl.aspx