在使用win8系统后,突然想运行iis,于是在windows组件中启用iis,并aspnet_regiis.exe -i注册iis后,于是开始发布了一个站点,一切正常
继而,在该站点下添加虚拟目录,然后预览虚拟目录的网页,就会立刻报类似“未能加载程序集“App_Web_utohcdb4”。请确保在访问该页之前已经编译了此程序集。”的错误
我纳闷了,我记得在以前版本的iis上建立一个虚拟目录是何其的简单并且不会出错,搜索后发现,原来右击网站,有了两个选下个“添加应用程序”和“添加虚拟目录”
继续搜了下两者异同(源自:http://blog.csdn.net/xiaoqijun/article/details/16523811)
A.虚拟目录 虚拟目录是指在站点下建立一个虚拟子目录,指定一个固定的物理路径做为站点的应用路径。 1. 虚拟目录与父级站点共用一个应用程序池 例如:站点TestWeb(c:/Inetpub/wwwroot/TestWeb)下建立了SubTestA(D:/SubTestA)的虚拟目录 若TestWeb为设定了Framework V2.0,则SubTestA也必须是Framework V2.0的应用程序,否则将给带来Framework不匹配的各种错误。 2. 虚拟目录必须将可执行文件(dll等)放置在父级站点的bin目录下。 3. 虚拟目录中的web.config文件继承父级站点的web.config. 就是说如果父级站点声明过的引用,在虚拟目录下的web.config中不应重复声明 4. 虚拟目录中的应用其根目录为父级站点的根目录 5. 虚拟目录中的AppSetting.config设置应使用相对路径来进行引用。B. 应用程序 应用程序是指在父级目录下建立了一个单独的应用程序,独享应用程序池 1. 应用程序可以与父级站点拥有不同的应用程序池 即可以达到TestWeb为Framework V2.0,而SubTestA可以是Framework V4.0,二者互不影响 2. SubTestA的可执行文件独立的放置在根目录下的bin中,不能放置在WebTest的bin目录中 3. SubTestA的web.config独立于WebTest的web.config(之前说SubTestA的web.config独立于WebTest的web.config其实是不对的,测试发现就算添加应用程序也会继承站点下的web.config,除非配置禁止继承) 4.SubTestA中的应用其根目录为父级站点的根目录 5.虚拟目录中的AppSetting.config设置应使用相对路径来进行引用。应用程序是建立在虚拟目录的基础之上,而应用程序独立于父级站点拥有独立的程序运行机制,这让同一站点拥有了运行不同框架集而不相互影响的能力实际运用中需要根据不同的情况来选择虚拟目录或应用程序考虑到我只是需要某网站的一个映射网址,两个发布文件没有任何关系,也不想公用任何config或者dll文件于是还是老实的“添加应用程序”来解决问题吧于是,我还是不甘心,去iis网站配置文件applicationHost.config(C:/Windows/System32/inetsrv/config)中查看到部分内容新闻热点
疑难解答