当另一个位置元素存在时,路径是否从根路径位置元素继承设置?

时间:2014-05-26 04:26:36

标签: asp.net .net

我在ASP应用程序中使用了web.config,将大部分设置应用于根路径,例如。

<location path="." inheritInChildApplications="false">
  ...
  <authentication mode="Forms">
    <forms loginUrl="Login" name="APP" />
  </authentication>
  <authorization>
    <deny users="?"/>
  </authorization>
  ...
  <system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>
  </system.webServer>
  ...
</location>

然后我允许匿名访问“api”路径,如下所示。

<location path="api" inheritInChildApplications="false">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>

根路径位置元素中应用的其他设置是否适用于“api”路径?

我在制作中遇到了一些奇怪的行为,发现在上面添加了<system.webServer>配置。在将大部分配置移动到根路径位置元素之前,不需要这样做。

1 个答案:

答案 0 :(得分:1)

这取决于api路径是否在子应用程序中。

如果子应用程序中的api路径,是的,应用于根位置的其他设置将应用于该路径。

如果子应用程序中的api路径 ,否则应用于根位置的其他设置将应用于它 - per {{ 1}}。

我在VS 2013网络应用程序中使用Web根目录和inheritInChildApplications="false"子文件夹确认了这一点:

  1. 按原样在IIS Express中运行(即api不是子应用程序)。
  2. 在IIS中运行,其中root用作应用程序,api用作子应用程序。
  3. 有关详细信息,请参阅MSDN's documentation for the location element - 特别是其api属性。