none
求教vs2008中如何在网站下面建立虚拟目录? RRS feed

  • 问题

  • 网站中上传的图片是通过/upload/xxx.jpg  这个路径访问的
    upload文件夹是在网站根目录外面的,通过在IIS中建立虚拟目录可以访问的到

    问题是,我在VS2008中设计视图中无法预览这些图片。启动调试时也无法显示这些图片。
    请问该怎么办
    2009年9月2日 2:22

答案

  • 你可以将你的代码放在iis的站点下面,然后通过VS2008,打开WebApplication工程,或者打开http方式的网站工程,这样,VS里面也是站点,没有虚拟目录了。
    【孟子E章】
    2009年9月2日 4:56
    版主

全部回复

  • 您好,不在设计试图中预览,写一个网页用来显示图片,关键代码请参考:
    Response.ContentType = "image/jpeg";
    Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(fileName));
    this.Response.TransmitFile(@filePath);//filePath为文件所在服务器上的绝对路径。
    this.Response.End();
    2009年9月2日 2:37
    版主
  • 谢谢,可能我没表述清楚 ,这是网站的目录结构
    wwwroot
     --upload
     ----test.jpg
     --web
     ----default.aspx

    web是网站的根目录,在default.aspx中通过 <img src="upload/test.jpg" /> 使用图片,
    当我用VS2008调试页面或在设计视图中upload/test.jpg因为路径不正确所以显示不出来。

    我想问的是VS2008中可以在网站下(wwwroot/web/)建立一个虚拟目录upload指向wwwroot/upload/文件夹吗?使upload/test.jpg这个路径有效。是IIS中可以的。

    主要问题是:网站发布后在IIS中可以通过虚拟目录来访问站点根目录外面的图片,那当我使用Visual Studio 开发期间怎么访问站点根目录外面的图片呢?
    2009年9月2日 2:49
  • vs2008自带的是调试用的简易的webserver应该不带这个功能。我没见过。
    IIS本身就是做webserver的,当然可以建多个虚拟目录,既然IIS可以,为什么不直接指向IIS,可以在配置文件中指定一下。

    我上面给出的是处理站点外文件的用法之一。很大原因是为了安全考虑。如果您的图片没有这方面的顾虑,为何要设计成上传到站点外?
    2009年9月2日 3:03
    版主
  • 试试改为<img src="/upload/test.jpg" />
    2009年9月2日 3:05
    版主
  • 当我在“网站属性” 中改为 “使用自定义服务器” 调试网站时。浏览页面时图片可以显示的。但是设计视图中还是没法看得到
    2009年9月2日 3:09
  • 嗯,不用太苛求设计模式中也能看见。设计视图应该是不会去找虚拟目录的。
    通常我们建的web网站或web应用程序都是发布都一个虚拟目录中的,所以可以假想设计视图本身不会去找别的虚拟目录。

    总觉得,上传图片路径部分有问题。如果不是出去安全考虑,不建议把文件放在别的虚拟目录下。不知这么设计的目的是?
    2009年9月2日 3:15
    版主
  • 你好,设计视图,默认是使用你的Web目录作为根目录的,<img src="upload/test.jpg" /> 实际上是访问web目录下的upload,但是不存在。

    jon.valett@gmail.com
    2009年9月2日 3:21
    版主
  • 你好,设计视图,默认是使用你的Web目录作为根目录的,<img src="upload/test.jpg" /> 实际上是访问web目录下的upload,但是不存在。

    jon.valett@gmail.com
    是啊,所以我想使在IIS中建立的虚拟目录在VS用也可以用。或则有个替代的方法也行
    2009年9月2日 3:30
  • lz可以尝试把网站的启动选项修改为iis 启动   vs 会直接在相应的iis 建立虚拟目录
    恭喜自己5星用户达成
    2009年9月2日 3:32
  • 你好,你可以把整个网站包含到解决方案。
    jon.valett@gmail.com
    2009年9月2日 3:36
    版主
  • 你可以将你的代码放在iis的站点下面,然后通过VS2008,打开WebApplication工程,或者打开http方式的网站工程,这样,VS里面也是站点,没有虚拟目录了。
    【孟子E章】
    2009年9月2日 4:56
    版主
  • 你可以将你的代码放在iis的站点下面,然后通过VS2008,打开WebApplication工程,或者打开http方式的网站工程,这样,VS里面也是站点,没有虚拟目录了。
    【孟子E章】

    为啥我的就不算对阿  已经建立好的网站   确实可用vs自动建立的阿  哎
    恭喜自己5星用户达成
    2009年9月2日 5:25
  • lz可以尝试把网站的启动选项修改为iis 启动   vs 会直接在相应的iis 建立虚拟目录
    恭喜自己5星用户达成
    请教是在这里改吗?

    右击“解决方案资源管理器”中的网站项目名称,然后单击“属性页” .
    单击“启动选项” 节点 选择“使用自定义服务器“ 输入“基URL”
    2009年9月2日 5:43
  • 根据以上各位老师所说的,自己实践了一次达到了自己的需求在这里把这些步骤记录了下来希望能帮助到遇到同类问题的同学
    1 在VS2008中新建一个空白解决方案
    2 在解决方案目录下建立一个网站文件夹,在同级目录下创建一个文件夹用作虚拟目录的主目录这里是“upload”
    3 在IIS中新建网站主目录指向第二步创建的网站文件夹,然后在该网站下创建相应的虚拟目录这里就是“upload”
    4 在第一步新建的解决方案中新建网站(或添加现有网站)点击“浏览”选择“本地IIS"然后选中上一步在IIS创建的网站。
    5 单击”确定“ 会出现 ”当前网站运行在.net2.0是否升级到3.5的..."之类的提示。点击“是”的话会在网站的根目录下生成一个 “aspnet_client”的文件夹。点击“否”就不会生成了。
    6 完成以上所有步骤ctrl+f5测试既可以看到效果
    2009年9月3日 1:15