这应该很简单,但它不起作用。
我的项目根目录下有一个文件。我想这样称呼它。
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")
我缺少一些设置吗?它必须是简单的......
答案 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