ASP.net相对路径不起作用?

时间:2010-07-16 14:23:01

标签: asp.net relative-path path

这应该很简单,但它不起作用。

我的项目根目录下有一个文件。我想这样称呼它。

GetWorkbook("tplBud806_wRevenue.xls")

我将项目发布到服务器并尝试运行它,服务器说它无法找到它。

Could not find file 'c:\windows\system32\inetsrv\tplBud806_wRevenue.xls'.

这不是它应该采取的道路。它应该在E:\ IIServer \ rootwww \ reports \ tplBud806_wRevenue.xls下。

我认为相对路径应该从项目运行的路径开始。我也尝试过。

GetWorkbook("/tplBud806_wRevenue.xls")
GetWorkbook("\tplBud806_wRevenue.xls")
GetWorkbook("~/tplBud806_wRevenue.xls")
GetWorkbook("~\tplBud806_wRevenue.xls")

我缺少一些设置吗?它必须是简单的......

5 个答案:

答案 0 :(得分:7)

GetWorkBook(Server.MapPath("tplBud806_wRevenue.xls"));

答案 1 :(得分:3)

GetWorkbook不是ASP.NET函数,它可能默认为调用它的进程启动的文件夹。这种情况下的过程是一个IIS进程,可能在该文件夹中启动。

答案 2 :(得分:1)

使用Server.Mappath?

答案 3 :(得分:1)

您的应用程序正在由位于错误目录中的w3wp.exe加载的AppDomain中运行。这意味着尝试查找任何文件将从该目录开始。您应该使用其他人提到的Page.MapPath。它告诉应用程序开始查看您的aspx所在的文件夹。

答案 4 :(得分:1)

GetWorkBook(Server.MapPath("~/tplBud806_wRevenue.xls"));如果.XLS文件位于项目的根目录。

您还可以使用~与ResolveURL()结合使用来访问您网站中的网址。因此,~将替换为项目的根URL

示例:

ResolveURL("~\tplBud806_wRevenue.xls")

将转变为 http://myproject.url/website/tplBud806_wRevenue.xls

如果您需要磁盘访问权限(如示例所示),请使用Server.MapPath

请查看此SO post以了解有关Server.MapPath

的更多信息