繁体   English   中英

在IIS中将bin绑定为虚拟目录会创建global.asax错误

[英]Binding bin as a virtual directory in IIS creates global.asax error

我想将ASP.NET MVC应用程序部署到IIS服务器,并通过虚拟目录导入其所有必需的资源。 这与应用程序中使用的所有其他文件夹都可以正常工作。 除了bin /文件夹。 如果我尝试虚拟目录的BIN文件夹,则该应用程序无法启动:

Parser Error

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load type 'MyCompany.Services.Global'.

Source Error: 


Line 1:  <%@ Application Codebehind="Global.asax.cs" Inherits="MyCompany.Services.Global" Language="C#" %>

Source File: /global.asax    Line: 1 

现在我为什么要这样做:

我公司有以下情况:

我们有一个ASP.NET MVC网站解决方案。 它在我们的一台服务器上为2个客户部署。 两个客户总是同时部署。 两者使用相同的版本。 但是他们两个都使用不同的配置文件。 (Web.config和root-config.js表示角度)。

结构会像这样

c:\inetpub\wwwroot\
                    + curstomerA\
                            + bin\
                            + Scripts\
                            + Views\
                            + (...)
                            + web.config
                            + root-config.js
                    + curstomerA\
                            + bin\
                            + Scripts\
                            + Views\
                            + (...)
                            + web.config
                            + root-config.js

c:\\ inetpub \\ wwwroot \\ curstomerA \\和c:\\ inetpub \\ wwwroot \\ curstomerB \\都是在IIS中创建的自己的网站。 它们具有不同的应用程序池,并绑定到不同的子域:

c:\\ inetpub \\ wwwroot \\ curstomerA \\ => customerA.myCompany.com

c:\\ inetpub \\ wwwroot \\ curstomerB \\ => customerB.myCompany.com

所以我想做的是

c:\inetpub\wwwroot\
                    + curstomerA\
                            + bin\
                            + Scripts\
                            + Views\
                            + (...)
                            + web.config
                            + root-config.js
                    + curstomerA\
                            + <bin> as virtualDirectory onto c:\inetpub\wwwroot\curstomerA\bin\
                            + <Scripts> as virtualDirectory onto c:\inetpub\wwwroot\curstomerA\Scripts\
                            + <Views> as virtualDirectory onto c:\inetpub\wwwroot\curstomerA\Views\
                            + (...) [like above]
                            + web.config
                            + root-config.js

它不能是访问权限问题; 在本地计算机上,我放宽了对文件夹的访问权限,但仍然无法正常工作。

现在我的问题是:为什么这不适用于BIN文件夹? 为了使这项工作我需要做什么?

还是我只是误解了虚拟目录的用途? (注意:我已阅读https://www.iis.net/learn/get-started/planning-your-iis-architecture/understanding-sites-applications-and-virtual-directories-on-iis

好,在我阅读了HG Sandhagen指出的链接和相关链接之后

它不能按预期方式工作,因为IIS使用虚拟目录将url与物理目录进行匹配,但是Web应用程序在web.config所在的主文件夹下的bin文件夹中查找dll(在物理目录中)。 可以在web.config中更改搜索路径。指定程序集的位置,但是据我所知,这仅适用于子文件夹。

这似乎是不可能的,因为它似乎仅适用于子文件夹。 因此,我通过创建目录结解决了我的问题。

因此bin文件夹现在正在使用此符号链接,而我使用的其他目录是虚拟IIS目录。

PS:我意识到现在这个stackoverflow主题的标题应该是这样的问题格式:

“为什么不能在IIS中成功将'bin \\'绑定为虚拟目录?”

我很抱歉 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM