在 VS2013 MVC4 IIS express 中向应用程序根目录添加多级虚拟目录

Adding multiple levels of virtual directory to application root in VS2013 MVC4 IIS express

我正在使用 Visual Studion 2013MVC4。我正在为每个区域使用应用程序和路由规则中的区域(RegisterArea 覆盖)。

我的公司决定将我们的 Web 应用程序提高一个级别,现在我必须将 Calculator 附加到所有 javascript 脚本、css 和应用程序中的所有其他路径+ 为所有 Controllers

这样做

我说的是来自

http://host:1234/legal-services/Wills/Index

http://host:1234/legal-services/Calculator/Wills/Index

所以在替换了所有脚本后,我去了 csproj 并为应用程序根目录添加了覆盖,因此它会覆盖所有控制器,但这被完全忽略了。

我假设在覆盖主机时,一个只能使用主机名和端口,但不能使用文件夹。

更新: 我也尝试过直接修改 .csproj 文件来更改 IISUrl 设置

来自
<IISUrl>http://localhost:50766/legal-services/</IISUrl>

<IISUrl>http://localhost:50766/legal-services/Calculator/</IISUrl>

但这对以太币没有影响。

更新2:

因此 C:\Users\[username]\Documents\IISExpress\configapplicationHost.config 的配置发生了变化,以添加额外的虚拟目录

来自

    <virtualDirectory path="/" physicalPath="C:\hg\Website" /> 
    <virtualDirectory path="/legal-services" physicalPath="C:\hg\Website" />

    <virtualDirectory path="/" physicalPath="C:\hg\Website" /> 
    <virtualDirectory path="/legal-services/calculator" physicalPath="C:\hg\Website" />

但是现在我 运行 遇到了不同的问题,因为我现在正在处理虚拟目录上的多层,我得到了 403,这很有意义,因为中间的路径 (/legal-services) 不是在列表中。

当我添加

 <virtualDirectory path="/" physicalPath="C:\hg\Website" /> 
<virtualDirectory path="/legal-services/calculator" physicalPath="C:\hg\Website" />
<virtualDirectory path="/legal-services" physicalPath="C:\hg\Website" />

我遇到配置错误(我假设是因为所有 3 个路径都指向同一个目录)

It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.

<authentication mode="Forms">

这表示路径未被识别为 Web 应用程序或存在 web.config 冲突。

如何配置才能使 path="/legal-services/calculator" 被识别为没有 web.config 冲突的应用程序?

所以解决方案是在 applicationHost.config 中创建两个单独的应用程序路径,如下所示,其中主路径具有虚拟目录路径的一部分,第二个应用程序具有完整的虚拟目录路径,如下所示:

<site name="Website-Site" id="2">
     <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\hg\Website" />
        <virtualDirectory path="/legal-services" physicalPath="C:\hg\" />
    </application> 
    <application path="/legal-services/Calculator" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\hg\Website" />
    </application>              
    <bindings>
        <binding protocol="http" bindingInformation="*:50766:localhost" />
    </bindings>
</site>

希望这能为您节省一些时间。