4

在我的解决方案中,我有 2 个项目,分别调用它们FooBar. 部署后,Foo它是根站点 (http://mycompany.com) 并且Bar是子目录 (http://mycompany.com/sub)。

当我在本地计算机上的 IIS Express 中本地处理它们时,我需要将内容复制到两个项目的 web.config 中,因为我分别处理它们。例如,我的重写规则中有“缓存破坏”的 HMTL5 样板规则之一:

<rewrite>
    <rules>
        <rule name="Cachebusting">
            <match url="^(.+)\.\d+(\.(js|css|png|jpg|gif)$)" />
              <action type="Rewrite" url="{R:1}{R:2}" />
        </rule>
    </rules>
</rewrite>

如果我只是将它留在 web.config for 中Foo,那么当我处理 时Bar,它不会被应用,并且由于没有发生重写而出现错误。因此,我已将两个项目的部分复制到 web.config 中。

但是当我将解决方案发布到 Azure 时,由于 web.config forFoo位于根目录中,因此由于继承规则而发生冲突。

管理此问题的最佳方法是什么?我试图搜索这个主题,但找不到描述的这个确切问题。

更新:

applicationhost.config的 IIS Express 是这样的:

        <site name="Bar" id="3">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="E:\Code\mycompany\Bar\Bar" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:65052:localhost" />
            </bindings>
        </site>
        <site name="Foo" id="4">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="E:\Code\mycompany\foo" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:50477:localhost" />
            </bindings>
        </site>

我尝试对其进行编辑以使两个应用程序成为同一站点的一部分,进行了这些更改但没有运气。似乎打破了一切:)

        <site name="Foo" id="3">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="E:\Code\mycompany\foo" />
            </application>
            <application path="/Sub" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="E:\Code\mycompany\Bar\Bar" />
            </application>              
            <bindings>
                <binding protocol="http" bindingInformation="*:65052:localhost" />
            </bindings>
        </site>
4

2 回答 2

0

使用web.debug.configweb.Release.config管理开发和发布环境的差异。有关更多信息,请关注此 SO POST此 MSDN 博客

于 2012-06-26T07:04:40.210 回答
0

将您的根站点 (http://mycompany.com) 设为 IIS 中的网站,将您的子目录设为 IIS 中的虚拟目录。

IIS 与虚拟目录共享根网站(的 web.config)中定义的规则。

于 2012-06-26T04:49:35.307 回答