【问题标题】:Asp.Net web.config Rules ignoring sub applicationsAsp.Net web.config 规则忽略子应用程序
【发布时间】:2013-10-09 00:47:38
【问题描述】:

所以我的环境是C# asp.net sitefinity webforms / mvc / webapi hybrid。 我在 IIS 7 中有一个应用程序池,位于 Amazon elb 后面。

我在 IIS 中有一个网站 foo.com。我向 foo.com 添加了一个名为 bar 的应用程序。 所以我的其他网站可以通过 foo.com/bar 访问。

这两个网站运行良好(大部分情况下)。但有时当我访问相同的网址时 属于 foo.com/bar/* 我会收到 404 错误,我在浏览器地址栏上按 Enter 它再次显示。 404 很难复制,有时我会渲染页面,有时会得到 404。

问题是我得到的 404 页面来自 foo.com,而不是 foo.com/bar。

所以看起来有时 foo.com 正在尝试解析 url 而不是 foo.com/bar 解析 url。

我注意到进入 elb 的 https 流量以 http 形式发送到我的应用程序,所以也许 elb 有时会做一些有趣的事情,但其他时候不会?

无论如何,为了解决问题,我希望我在 foo.com 的应用程序忽略对 foo.com/bar 的所有 url 请求,所以如果我仍然得到 404,我至少想要来自子应用程序 (foo.com/bar) 的 404 页面)。

所以我正在考虑将此规则添加到 foo.com web.config

<rule name="Ignore bar" stopProcessing="true">
  <match url="^.*foo.com/bar/.*" />
  <action type="None" /> 
</rule>

但我不确定该操作的作用。 没有人做什么?我的意图是让 foo.com 忽略 url,如果匹配正则表达式,让 foo.com/bar 获取 url。

foo.com/bar 处于测试模式,但 foo.com 是一个实时站点,所以我不想破坏任何东西。

顺便说一句,在我的开发或登台环境(IIS 应用程序以与实时相同的格式设置)中,我没有得到 foo.com/bar/* 的 404。

主要区别似乎是亚马逊环境,但我可能是错的。

那么我的规则会起作用吗?或者,还有更好的方法?

编辑:我不知道这是否相关,但在我的亚马逊实例上,sitefinty 显示我有一些 HTTP PUT 错误(当我猜想 elb 试图将某些东西放入我的子应用程序时(foo.com/bar) ,错误是超时)。

编辑 2:当尝试在 https 上对 WebApi 方法(到 foo.com/bar)进行 Get 调用时,我总是从 foo.com 得到 404。但是 http 上的相同 url 和我得到了预期的数据,这似乎是一致的可重现的。

【问题讨论】:

    标签: asp.net asp.net-mvc iis amazon-ec2 sitefinity


    【解决方案1】:

    尝试执行以下操作。在子应用程序的 webconfig 上。 (foo.com/bar.)

    清除规则,然后定义您需要的内容:

    <rules>
       <clear />
       <!-- Define your subapplication rules if needed -->
    </rules>
    

    该语句清除所有从父应用程序继承的规则。

    你可以算法使用:

        <location path="." inheritInChildApplications="false">
    

    父应用程序上的标签之间包裹的所有行都不会 继承到子应用程序

    【讨论】:

    • 我的子应用程序中根本没有任何规则(在这种情况下添加清除标记还有价值吗?)。至于父App中的location标签,我已经有了。
    【解决方案2】:

    我解决了这个问题。

    问题出在亚马逊 ELB 之上,我们还有另一个 akamai 负载均衡器。 Akamai 正在缓存某些 url 并将它们发送到错误的服务器,因此我们得到了 404,因为子应用程序不在 Akamai 发送请求的服务器上。

    清除了 Akamai 缓存,现在所有请求都在工作/访问正确的服务器和应用程序。

    我没有在我的问题中包含此信息,因为我不知道实时环境是这样设置的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 2017-01-17
      相关资源
      最近更新 更多