Asp.Net web.config规则忽略子应用程序
因此,我的环境是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.configAsp.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很难复制,有时我得到一
<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标记是否仍有价值?。至于父应用程序中的位置标签,我已经有了。