0

ASP.NET 允许在站点结构中的子级别使用 Web.Config 文件。但是,我找不到任何文章讨论从代码中的外观。

在 Orchard CMS 中,整个商店都有配置文件。一个只包含 .CSS 文件的文件夹中甚至还有一个配置文件!我是大型 ASP.NET 应用程序的新手,所以...

有人可以告诉我我的假设是否正确。

  • 配置文件会影响服务器设置,从而影响服务器如何处理对站点结构更下方的资源的请求。

  • 从代码的角度来看,如果同一类中的同一行代码在请求期间查询配置文件,http://level1.resource那么它可能会读取与在请求期间执行相同代码时不同的值http://level1/level2.resource(如果有 web.config在 2 级)

    • 总的来说,它的工作方式是基于当前的请求路径。

正确的?

4

2 回答 2

1

您可以在子文件夹级别使用多个 web.config 文件。每个文件夹都将包含其自己的 web.config。不能在同一级别使用多个 Web.config 文件。

下面是根文件夹 web.config 的代码

<?xml version="1.0"?>
<configuration>
<system.web>
    <compilation debug="true" targetFramework="4.0" />
</system.web>
 <appSettings>
 <add key="root" value="This is from root web.config"></add>
 <add key="MySetting" value="This my settings is from root web.config"></add>
 </appSettings>
</configuration>

以下是子文件夹 web.config 的代码。

<?xml version="1.0"?>
<configuration>
<system.web>
</system.web>
<appSettings>
 <add key="sub" value="This is from sub web.config settings"></add>
 <add key="MySetting" value="This my settings is from sub folder web.config"></add>
</appSettings>
</configuration>

在 C# 中,您可以访问不同配置文件的设置,如下所示。System.Web.Configuration.WebConfigurationManager.AppSettings.Get("Root"); System.Web.Configuration.WebConfigurationManager.AppSettings.Get("MySetting")

于 2012-10-15T12:41:57.143 回答
0

这是一个老问题,但我只是根据原始帖子在 Orchard CMS 上下文中专门问了自己同样的问题,并且我得到了 Orchard 特定的答案。

在 Orchard CMS 的根目录中,有一个 web.config 想要阻止所有用户请求单独的静态文件。例如,您不希望人们从主题文件夹下载placement.info 或theme.txt。这是一个很好的“阻止一切,允许你需要的东西”的方法。

<handlers accessPolicy="Script">
    <!-- Clear all handlers, prevents executing code file extensions or returning any file contents. -->
    <clear />
    <!-- Return 404 for all requests via a managed handler. The URL routing handler will substitute the MVC request handler when routes match. -->
    <add name="NotFound" path="*" verb="*" type="System.Web.HttpNotFoundHandler" preCondition="integratedMode" requireAccess="Script" />
    [...]
</handlers>

问题是,在 Scripts(包含静态 js 文件)、Styles(仅包含大量静态 css 文件)或 Content(例如包含静态图像)等子文件夹中,您当然希望允许 Web 浏览器请求个人文件。因此,在这些子文件夹中,您有一个额外的 web.config,如下所示:

<handlers accessPolicy="Script,Read">
    <!-- For any request to a file exists on disk, return it via native http module. AccessPolicy="Script" above is to allow for a managed 404 page. -->
    <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
</handlers>

PS:我目前正在玩主题,出于某种原因,我不得不在所有这些子 web.config 中的<remove name="StaticFile"/>每个之前添加。<add name="StaticFile"...>

于 2016-04-15T07:43:27.077 回答