在你无权建立新的虚拟目录的情况下(实际上这种情况是虚拟主机用户经常遇到的)
你就必须把web.config文件App_Code目录bin目录等东西都放在根目录下
所以要想在一个虚拟主机下放入两个或多个asp.net程序会是一件十分困难的事
而这种需要是常常有的,比如主站下面还要放一个论坛、或者要搭配一个博客系统
而asp/php以及其他很多网页语言都没有这样硬性的路径要求
如果不需要整合用户数据的话,假如使用相对路径
asp/php的程序基本上可以直接全部复制到任何一个文件夹都可以完全正常运行
但asp.net不放在根目录或者虚拟目录就会出错,这种硬性规定路径的设计实在是太差了

解决方案 »

  1.   

    可以改C盘中的IDE的XML文件,还有项目的sln中的xml文件地址.
      

  2.   

    在你无权建立新的虚拟目录的情况下(实际上这种情况是虚拟主机用户经常遇到的) 
    你就必须把web.config文件App_Code目录bin目录等东西都放在根目录下 
    所以要想在一个虚拟主机下放入两个或多个asp.net程序会是一件十分困难的事
    而这种需要是常常有的,比如主站下面还要放一个论坛、或者要搭配一个博客系统
    ===========================================================
    谁也没有规定一定要用web.config嘛,你可以用自己定义的xml文件(甚至文本文件来保存配置信息)。
    配置一个应用程序配置多个网站,你可以将你的bin下的dll文件放到应用程序的bin目录下嘛。
     
    而asp/php以及其他很多网页语言都没有这样硬性的路径要求 
    如果不需要整合用户数据的话,假如使用相对路径 
    asp/php的程序基本上可以直接全部复制到任何一个文件夹都可以完全正常运行 
    但asp.net不放在根目录或者虚拟目录就会出错,这种硬性规定路径的设计实在是太差了
    =====================================
    不敢苟同。
      

  3.   

    asp不存在后置代码一说,如果你把.net代码全部放在aspx中,不使用cs文件,也不用web.config文件和gloal.aspx,那么就不存在你说的问题。但是如果你要用那些特性,就必须新建虚拟目录另外,asp也不象你说的这么方便,如果asp应用了gloal.asp,那么也必须建立虚拟目录,否则也会存在问题。
    php没用过
      

  4.   

    To 1 楼:
    你认为虚拟主机服务商可能允许你改变C盘的东西么?
    To 2 楼:
    不是我用不用web.config的问题,我可以选择不用,但是有时候我们要用现成的程序啊,比如我想把Dvbbs.Net放到/bbs/目录里去,不建虚拟目录就很难办到,而asp版本的直接复制就可以了。打个比方吧,今天为了测试虚拟主机的性能,我下载了个asp.net探针,它自己有个web.config,而我根目录下放了个在线压缩解压缩程序,如果我覆盖,在线解压缩程序用不了了,如果跳过,探针用不了了。像以前asp我直接新建一个文件夹放进去就可以了
    To 3 楼:
    仍然是这句话,不是“如果”我怎么样的问题,而是那些现成的程序它都没这样做撒,区区一个探针就得占据着web.config,别的东西哪放去?
    asp程序基本上大部分(我没说全部)没有用到global.asa文件
      

  5.   

    在以前的asp中,没有web.config这个东东,所以很多人都只能自己做一个const.asp,或者conn.asp来保存一些信息
    而出现错误也只能依靠修改IIS的机制来跳转在.net中,加上了这个东东,它可以实现的功能很多,包括身份验证,包括错误处理(是否显示详细错误,是否跳转到指定页面等),包括页面超时时间和允许上传的文件大小等设置,当然所有开发程序的人都愿意用它,在发布后也能很方便的调整。而web.config中的这些信息在asp中完全不能简单实现,基本上都是要在iis中设定。而你说的问题只是在下载别人的东西时不能处理,别人开发程序当然基本上都是考虑发布在正常的服务器上,而不会考虑是不是允许设置为虚拟目录你完全可以按你的需求自己开发同样的一套东西,比如探针,简单的开发顶多1小时罢了。
      

  6.   

    web.config 和bin目录放到跟目录就可以了。其他的文件你可以放到任何文件夹下的。bin下的dll只是一些代码类,aspx文件会自动到bin里去找,而不是判断当前的aspx路径是否和你开发的时候一致。至于web.config,这个好像和其他没什么冲突吧。而且你也可以用自己的方式保存你的网站配置压
      

  7.   


    虚拟主机商不会为一个客户开多个虚拟目录的,不然的话 名称会打架的。(好的名称给谁用呢)net 只是要求 web.config  和 bin 文件夹 在 根目录下 ,至于 你的页面 可以放在空间的任何路径下面。  只要你把访问地址输入正确一样可以访问
      

  8.   

    使用
    ~/ABC

    ../../ABC
      

  9.   

    哪怕就一个web.config的麻烦就够受的了,全站只可以有一个web.config,要么这个把那个覆盖了,要么那个把这个覆盖了。
    To 5 楼:
    要说探针还能自己做,那动网论坛.Net呢?总不会也自己做撒,那也就是说在不允许建虚拟目录的虚拟主机里,你就甭想用现成的程序了,除非你愿意让它一个程序占据你整个虚拟主机别的程序没地方放
    To 6、7 楼:
    web.config怎么没冲突呢?整个站点就只能有一个web.config,你将就了这个就将就不了那个,将就了那个就将就不了这个。也就是说一个虚拟主机下只能放一套程序,而且必须把它放在根目录。
    To 8、9 楼:
    不知所云
      

  10.   

    我就简单的假设个情况吧:
    比如你在根目录下放了一些自己写的东西,用到了web.config。
    然而现在你下载了两套现成的系统,希望把它们分别放到/bbs/目录和/cms/目录,而它们都用到了web.config,并且他们的bin目录里有文件名相同但内容不同的文件,它们的复杂程度是你完全不可能自己另写的。
    不让你创建虚拟目录,你现在该怎么实现?
      

  11.   

    你的问题还是在虚拟主机的应用上
    只是由于供应商的限制,导出asp.net在虚拟主机上的应用有了点问题
    那你不想想.net的强大功能呢?而这个实际上也不存在你说的对于路径的依赖太严重的问题,只是因为开发者正好和供应商有冲突
    比如对asp,很多供应商都限制了fso的应用,那是不是你又要说,asp对fso的依赖太严重了呢?
      

  12.   

    但是现实情况是禁用FSO的虚拟主机基本上找不到,但是基本上档次低一点的虚拟主机全都禁止建立虚拟目录
    况且FSO又不是asp的属性,它只是一个组件,Asp.Net一样可以用它
    我没说没想过Asp.Net的强大功能撒,Asp.Net的功能确实强大得很。
    但是我现在不是做测评,不是整体比较它们哪个好,而是说其中一方面,我只是在说对路径的硬性规定的这一方面。
      

  13.   


    web.config怎么没冲突呢?整个站点就只能有一个web.config,你将就了这个就将就不了那个,将就了那个就将就不了这个。也就是说一个虚拟主机下只能放一套程序,而且必须把它放在根目录。这就是你的问题了,谁说配置文件就必须在 web.config里了,你一样可以写在别的文件里,何必那么死板。都能建立虚拟目录的话,我把你想要的虚拟目录抢先建立了,请问你怎么办。以前公司也是用的虚拟空间,一样放多个程序,只是规定好了,名称要区分开来,当时还不是用的一个 web.config。不同情况下,不同的处理方式,只能说你太死板了吧。
      

  14.   

    我要说的就是楼上这位说的——一个虚拟主机只能放一套程序,而且必须把它放在根目录——这就是我说的“对路径地依赖太严重”的意思。
    是的,对于我自己编写的程序我可以不放在web.config里,但是关键是并非任何时候都是自己写的程序啊,比如一个BBS和一个CMS,都是下载的现成程序,它们就是这么做的,它们写在了web.config里啊。如果在asp下,可以把任意多套程序放在任意路径,但是Asp.Net只能放一套程序,并且连路径都规定死了只能在根目录。
      

  15.   


    晕,你看错了吧  我的意思是可以放多个的如果你下的 bbs 和 cms 数据库连接字符串的名称是一样的 怎么办,你就在这说路径依赖太严重?对问题的解决没任何办法。只能说 你没明白原理,知道原理后,才能进行修改。程序是死的,人是活的啊。
      

  16.   


    如果你们是自己开发的话,就应该避免重名的行为。这是你们可以控制的。如果用第三方的,其实你注意看看 基本上名字都是有区分的,不会有重复的,特别是比较教有名的。如果碰到了 重名 ,发封邮件去提醒他们一下,然后换一套程序,这点小问题都没考虑到,别的地方只怕也会有问题。虚拟主机是这样的,至少 我两三年没碰到. webconfig 数据库 项目名 全都要考虑重名的问题。现在公司买了个服务器,想怎么配置就怎么配置,不过现在考虑的问题就是服务安全的问题了。虚拟主机管理员不会帮你做什么的,都要自己想办法。抱怨一下,消消火,然后继续思考如何去解决,问题终究是需要你 自己去解决的。
      

  17.   

    你这话我完全无法理解,在ASP.NET下,重名是必然的、无可避免的OK?你居然说不会碰到重名?ASP.NET规定死了必须放在根目录、又规定死了文件名,难道你不知道同一个文件夹下不可能放两个文件名完全相同的文件么?这是百分之百的重名,要么第二个覆盖第一个让第一个不能用,要么不覆盖那么第二个就不能用
      

  18.   

    搂主的意思是不是一个虚拟目录只能有一个web.config,且在一个web.config中只能有一个主页路径,使得当无法新建虚拟目录时,就不能挂多个app了?
      

  19.   

    楼主你真tm搞笑
    sb,鉴定完毕
      

  20.   


    楼主可以考虑将两个web.config的内容合并。
    两个web.config中的内容如果是比较有名的应用程序一般都会考虑重名问题。
    应该是可以合并的。
      

  21.   

    就单凭路径这一点否定asp.net也太简单粗暴了把,我狂晕,人家微软也该倒闭了
      

  22.   

    你完全可以在各个目录下新建webconfig啊,页面取配置参数的时候是取离该页面最近的那个webconfig的...如果最近的没有要取的参数,再往上推,最后才到根目录下的..2003的不是很了解,但是vs2005是这样的
      

  23.   


    .NET规定死了必须放在根目录、又规定死了文件名。规定了根目录 的是 web.config 和 bin 文件夹。至于你的项目 可以在虚拟目录的不同文件夹里,运行的时候无非加点文件夹名称,而并非是根目录下。 只程序不过运行的时候,在根目录下去寻找 web.config 和 对应的dll.这么说,再该明白了吧。
      

  24.   

    asp.net 程序也可以放在文件夹里,只不过需要把 web.config 和 bin 文件夹 放在根目录下。 因此 需要考虑重名的 就是 dll 了,而并非 index.aspx 之类的页面文件。
      

  25.   

    根目录下的文件夹中的web.config里面的配置 会对根目录下的web.config里面的配置进行覆盖(类似于程序里面的override)