我正在尝试将图片上传到名为的文件夹
~/Avatars/
。
我的项目位于VS2010项目文件夹中 `C:/项目/ MyProject的
当我尝试
获取物理路径到Avatars文件夹时Server.MapPath("/Avatars")
它总是返回
C:\inetpub\wwwroot\Avatars
而不是
C:\Projects\MyProject\Avatars.
当我在VS2010 dev 服务器上运行项目时,它工作正常。
任何人都可以帮助我如何在IIS中获得实际路径吗?
答案 0 :(得分:3)
好像您正在部署到IIS,这是部署的默认文件夹。在本地运行时,dev服务器会运行本地文件夹。
您需要的是Server.MapPath("~/Avatars")
或Server.MapPath("Avatars")
。此外,请确保在部署到IIS时,您的站点已部署到C:\inetpub\wwwroot\My Project\
。
答案 1 :(得分:1)
检查IIS中是否未创建指向路径的虚拟目录 Avatars :“C:\ inetpub \ wwwroot \ Avatars”。
在这种情况下,Server.Mappath返回相同的路径。在这种情况下,从IIS中删除该虚拟目录
答案 2 :(得分:1)
您的项目的虚拟目录似乎是在“默认网站”内部创建的。因此,如果您的虚拟目录名为“ myapp”,则要访问您的站点,您应该在地址栏中输入“ http://localhost/myapp”。因此,“ /”将指向“ http://localhost”,其物理路径将为“ C:\ inetpub \ wwwroot”。
当您在VS Developer Server(IIS Express)上运行时,可以通过“ http://localhost:42111/”之类的URL访问您的站点。因此,“ /”将指向“ http://localhost:42111/”,其物理路径将为“ C:\ Projects \ MyProject”。
对我来说,解决此问题的最简单方法是为您的站点重新创建虚拟文件夹。删除现有的虚拟文件夹,并在“默认网站”之外创建一个新的虚拟文件夹。您将必须为站点分配另一个TCP端口(而不是80)。如果您愿意,您将通过“ http://localhost:8080/”之类的URL访问您的网站。或者,您可以将“默认网站”配置为在另一个端口上运行,并为您的站点分配端口80。无论哪种方式,“ /”都将使用物理路径“ C:\ Projects \ MyProject”指向“ http://localhost:your_port/”。在这种情况下,Server.MapPath会为您正常工作。