Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.Net web.config规则忽略子应用程序_Asp.net_Asp.net Mvc_Iis_Amazon Ec2_Sitefinity - Fatal编程技术网

Asp.Net web.config规则忽略子应用程序

Asp.Net web.config规则忽略子应用程序,asp.net,asp.net-mvc,iis,amazon-ec2,sitefinity,Asp.net,Asp.net Mvc,Iis,Amazon Ec2,Sitefinity,因此,我的环境是C asp.net sitefinity webforms/mvc/webapi混合。 我在iis7中有一个应用程序池,位于amazonelb后面 我在IIS中有一个网站foo.com。我在foo.com上添加了一个名为bar的应用程序。 所以我的另一个网站可以通过foo.com/bar访问 这两个站点在大部分情况下运行良好。但有时当我访问同一个url时 这属于foo.com/bar/*我将得到一个404错误,我在浏览器地址栏上点击回车键 它再次显示。404很难复制,有时我得到一

因此,我的环境是C asp.net sitefinity webforms/mvc/webapi混合。 我在iis7中有一个应用程序池,位于amazonelb后面

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

这两个站点在大部分情况下运行良好。但有时当我访问同一个url时 这属于foo.com/bar/*我将得到一个404错误,我在浏览器地址栏上点击回车键 它再次显示。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应用程序的设置格式与live相同,但我没有在foo.com/bar/*上获得404

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

那么我的规则行得通吗?还是有更好的办法

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


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

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

清除规则,然后定义所需内容:

<rules>
   <clear />
   <!-- Define your subapplication rules if needed -->
</rules>
该语句清除父应用程序中所有继承的规则

您可以使用:

    <location path="." inheritInChildApplications="false">
父应用程序上标记之间包装的所有行都不会被删除 继承到子应用程序

我解决了这个问题

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

已清除Akamai缓存,现在所有请求都在工作/命中正确的服务器和应用程序


我的问题中没有包含此信息,因为我不知道live环境是以这种方式设置的。

我的子应用程序中根本没有任何规则。在这种情况下添加clear标记是否仍有价值?。至于父应用程序中的位置标签,我已经有了。