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

在使用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

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架构层面上明确了三者的层次关系。具体可以参考:

http://www.cr173.com/html/18969_1.html

所以添加应用程序,本质上还是为其配置一个虚拟目录,根据path和 physicalPath很清楚的知道,iis是如何帮我们映射物理路径的

时间: 2024-12-25 06:22:19

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

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

微软官方的一部分解释 https://support.microsoft.com/en-us/kb/249873 关于32位和64位的说明 http://csi-windows.com/blog/all/73-windows-64-bit/378-fixing-qregsvr32-the-module-failed-to-load-the-specified-module-could-not-be-foundq 缺少依赖 http://stackoverflow.com/questions/27

未能加载程序集System.EnterpriseServices.Wrapper.dll

1.使用CMD命令行 copy C:WINDOWS\Microsoft.NET \Framework\v2.0.50727\System.EnterpriseServices.Wrapper.dll C:WINDOWS\Assebmly\GAC_32\System.EnterpriseServices\2.0.0.0_b03f5f7f11d50a3a copy C:WINDOWS\Microsoft.NET \Framework\v2.0.50727\System.EnterpriseServi

Linux # Virtul Box 安装增强功能时, 未能加载虚拟光盘VBoxGuestAdditions.iso

问题: Virtul Box 安装增强功能时, 未能加载虚拟光盘VBoxGuestAdditions.iso 分析:通过分析日志,%vbox_path%\VirtualBox Guest Additions\install_drivers.log发现, 查看安装过程中的信息,如下图,发现缺少 相关dll文件, Linux # Virtul Box 安装增强功能时, 未能加载虚拟光盘VBoxGuestAdditions.iso,布布扣,bubuko.com Linux # Virtul Box 安

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

virtualbox安装增强功能时[未能加载虚拟光盘] 今天在使用Virtualbox中的Ubuntu虚拟机,想安装增强功能来实现更改分辨率,但是在安装时出错:未能加载虚拟光驱 VBoxsGuestAdditions.iso到虚拟电脑 经过折腾,最后通过互联网找到了解决方法: 进入系统在侧边找到如图加载的虚拟光驱,右击,点击弹出,然后就可正常安装增强功能了 点击安装增强功能 点击"运行" 输入登录系统的密码,点击授权,就开始自动安装了 如图,为安装界面,安装完成后按下回车键,就按照成功

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

IDE:VS2010 语言:C# 异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项... 一般是由于目标程序的目标平台与其某一依赖项的目标编译平台不一致导致,把所有的项目都修改到同一目标平台下(X86.X64或AnyCPU)进行编译,一般即可解决问题.

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

需要检查项目的Microsoft.AspNet.WebApi版本是否最新,System.Web.Http 这个命名空间需要更新WebApi版本. 报错:未能加载程序集 System.Web.Http/System.Web.Http.WebHost NuGet>程序包管理器控制台:没有的话,需要安装:Install-Package Microsoft.AspNet.WebApi有的话,需要更新:Update-Package Microsoft.AspNet.WebApi -reinstall原因:

C# 未能加载项目文件

在使用VS打开从网上下载或者从其他地方复制得来的解决方案时,经常会出现这样一个错误,"在解决方案中的一个或多个项目由于以下原因未能加载项目文件或网站已移动或已重命名,或者不在您的计算机上." 查看输出窗口提示"error  : 未能加载项目文件.未能找到路径“D:\project\xcn\XCN.UI\xcn.csproj”的一部分." 其实这类错误大多数都是因为重命名而导致项目无法加载,以下是晓菜鸟为您提供的解决方法: 一.移除项目重新加载 右击无法加载的项目-&

ASP.NET Ajax 客户端框架未能加载、&quot;Sys&quot;未定义

在Windows Server 2003 系统上部署asp.net项目出现以下问题: IIS为6.0 导致菜单控件的图片显示不出来: WebSite:程序中的图片显示正常. 但用到ASP.net 2.0 的 asp:TreeView 控件,控件显示不出图片 图片属性: 地址:http://localhost/WebSite/WebResource.axd?d=41VAQHZc9t11gcfcSh8IynBrLxqhiiUYVpPeaSf8-4s1&t=633965754543750000协议:超

未能加载 Oracle.ManagedDataAccessDTC.dll 或它的依赖项

第一个项目做完了,交付给测试进行测试,碰到一堆问题,当然不是程序上的,而是环境上的! 这个项目是用 EF 5 + MVC5 + Oracle 11 开发的. 驱动用的是 Oracle.ManagedDataAccess ,本地WIN7/8.1运行一点问题都没有.今天下午打包到 WIN 2008 上,解决了一堆环境问题后,一个大难题出现了: Could not load file or assembly 'Oracle.ManagedDataAccessDTC.dll',什么 PSPManager