1

为什么我不能使用相对路径IO.StreamReader("Resources/file.txt")

我正在使用一个网络应用程序,所以显然该文件不会位于我的开发机器和服务器之间的相同绝对位置。

如何修复我的文件名路径以便它找到文件?

作为参考,我在路径“Resources/file.txt”中有一个文件(相对于调用它的页面),但愚蠢的函数正在根目录“C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE 。” 以防万一,我目前使用的是 .NET 3.5。

谢谢。:)

4

2 回答 2

2

那是因为您的工作文件夹不是 Web 根目录所在的位置,而是应用程序所在的位置。开发时,它位于 Visual Studio 应用程序所在的位置,而在实时服务器上,它将位于 IIS 应用程序所在的位置。

使用虚拟路径,以及将Server.MapPath其映射到相对于 Web 根目录的文件夹的方法:

StreamReader(Server.MapPath("Resources/file.txt"))
于 2012-08-27T23:38:29.260 回答
2

使用 HttpContext.Current.Server.MapPath(filename) 以字符串形式查找文件的相对路径,然后将其传递给 IO.StreamReader,如下所示:

Dim sr As New IO.StreamReader(HttpContext.Current.Server.MapPath(filename))
Dim text As String = DirectCast(sr, IO.TextReader).ReadToEnd() 'gives you text
于 2012-08-27T23:34:02.230 回答