在使用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)中查看到部分内容
(publish和test2.0是添加的虚拟目录,test2.0_是添加的应用程序)对应配置如下:
<sites>
            <site name="Default Web Site" id="1">
                <application path="/">
                    <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:80:" />
                </bindings>
            </site>
            <site name="test1.0" id="2" serverAutoStart="true">
                <application path="/" applicationPool="test1.0">
                    <virtualDirectory path="/test2.0" physicalPath="F:\asp.net\test 2.0\publish2.0" />
                    <virtualDirectory path="/publish" physicalPath="F:\asp.net\html5拖拽上传\test\publish" />
                </application>
                <application path="/test2.0_" applicationPool="test1.0">
                    <virtualDirectory path="/" physicalPath="F:\asp.net\test 2.0\publish2.0" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="192.168.1.107:8080:" />
                </bindings>
            </site>
            <siteDefaults>
                <logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" />
                <traceFailedRequestsLogging directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" />
            </siteDefaults>
            <applicationDefaults applicationPool="DefaultAppPool" />
            <virtualDirectoryDefaults allowSubDirConfig="true" />
        </sites>
 很清楚的看到,site(站点),application(应用程序),virtualDirectory(虚拟目录)的层次关系,并可以说明为:
一个site中可以有一个或者多个application,一个application中可以有一个或者多个virtual directory,而一个virtual directory则对应着一个物理路径。一个site默认会至少有一个application,称为根应用程序(root application)或者默认应用程序(default application),而一个application至少有一个vitual director,称为根虚拟目录(root virtual directory)
 
也许在早版本的iis中,例如iis6,应用程序和虚拟目录是没有太大严格区分的,在IIS7以上,这三者则被规范化起来,在IIS架构层面上明确了三者的层次关系。具体可以参考:
所以添加应用程序,本质上还是为其配置一个虚拟目录,根据path和 physicalPath很清楚的知道,iis是如何帮我们映射物理路径的
 
 
 
 
 
 
 

iis7+的虚拟目录:未能加载程序集“**”。请确保在访问该页之前已经编译了此程序集的更多相关文章

  1. regsvr32提示模块加载失败 请确保二进制

    微软官方的一部分解释 https://support.microsoft.com/en-us/kb/249873 关于32位和64位的说明 http://csi-windows.com/blog/al ...

  2. 异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项

    常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项 看到这个异常,我估计谁都会头大一阵子,不过还好,由于前面知道要设置为x86,加上以前观察过I ...

  3. virtualbox安装增强功能时【未能加载虚拟光盘】

    virtualbox安装增强功能时[未能加载虚拟光盘] 今天在使用Virtualbox中的Ubuntu虚拟机,想安装增强功能来实现更改分辨率,但是在安装时出错:未能加载虚拟光驱 VBoxsGuestA ...

  4. 异常:System.BadImageFormatException,未能加载正确的程序集XXX

    IDE:VS2015 语言:C# 异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项... 一般是由于目标程序的目标平台与其某一依赖项的目标编 ...

  5. .Net Framework 下运行项目提示.dll类库程序集未能加载

     咨询个问题..项目可以生成成功,运行时总提示未能加载程序集,而且这个程序集就是当前webApi项目的dll,这是怎么回事.. 还一个奇怪的现象,刚开始报缺失xxx.dll, 那个dll是本解决方案里 ...

  6. Virtualbox安装增强功能时显示【未能加载虚拟光盘】

    我之前在安装Virtualbox时进行到安装增强功能时弹出了一个窗口,提示我"未能加载虚拟光盘到虚拟电脑",如下图 我尝试了多次都是这个情况,经过上网学习我找到了问题所在,我在第一 ...

  7. 未能加载或程序集“XXXX,Version=0.0.0.0,Culter=neutral,PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。

    问题描述:在VS中运行一个C#程序,出现错误: 未能加载或程序集“XXXX,Version=0.0.0.0,Culter=neutral,PublicKeyToken=null”或它的某一个依赖项.试 ...

  8. MVC中未能加载程序集System.Web.Http/System.Web.Http.WebHost

    ==================================== 需要检查项目的Microsoft.AspNet.WebApi版本是否最新,System.Web.Http 这个命名空间需要更新 ...

  9. BadImageFormatException,未能加载正确的程序集XXX的解决办法

    BadImageFormatException,未能加载正确的程序集XXX的解决办法 IDE:VS2010 语言:C# 异常:System.BadImageFormatException,未能加载正确 ...

随机推荐

  1. LeetCode OJ:Simplify Path(简化路径)

    Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...

  2. Week03-Java学习笔记第三次作业

    Week03-面向对象入门 1.本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系. ...

  3. 《Java程序员职场全攻略 从小工到专家》 - 书摘精要

    (前言) 学习招式在次,提升内力才是最主要的: (P10) 选择一门编程语言,只是入门的途径.过分依赖编程语言,只会让自己成为代码高手,而不是开发大牛,要知道编程语言只是一种工具,更重要的是编程思想: ...

  4. New Concept English three (42)

    21 33 Cave exploration, or pot-holing, as it has come to be known, is a relatively new sport. Perhap ...

  5. C#连接Sqlite

    1.Slite简介 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需 ...

  6. AlexNet神经网络结构

    Alexnet是2014年Imagenet竞赛的冠军模型,准确率达到了57.1%, top-5识别率达到80.2%. AlexNet包含5个卷积层和3个全连接层,模型示意图: 精简版结构: conv1 ...

  7. 前端之JavaScript 04 事件 (未全)

    一.事件类型 常见的主要事件类型介绍如下: onfocus 元素获得焦点. 练习:输入框 onblur 元素失去焦点. 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行 ...

  8. 伪元素:target

    :target 伪类选择器 :target 是 CSS3 新增的一个伪类,可用于选取当前活动的目标元素.当 URL 末尾带有锚名称 #,就可以指向文档内某个具体的元素.这个被链接的元素就是目标元素(t ...

  9. php curl请求。header头中添加请求信息

    function get_data($key,$authorization,$url){ $headers = array(    'api-key:'.$key,    'authorization ...

  10. Python [Leetcode 374]Guess Number Higher or Lower

    题目描述: We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have t ...