ASP.NET允许站点结构中子级别的Web.Config文件。但是,我找不到任何讨论代码如何看待的文章。
在Orchard CMS中,整个商店都有配置文件。在一个只包含.CSS文件的文件夹中甚至还有一个配置文件!我是大型ASP.NET应用程序的新手,所以......
有人可以告诉我,我的假设是否正确。
配置文件可能会影响服务器设置,从而影响服务器如何处理对站点结构下方资源的请求。
从代码的角度来看,如果同一个类中的同一行代码在http://level1.resource
请求期间查询配置文件,则它可以读取不同的值,以便在执行期间执行相同的代码请求http://level1/level2.resource
(如果第2级有web.config)
右?
答案 0 :(得分: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#中,您可以访问不同配置文件的settigns,如下所示。 System.Web.Configuration.WebConfigurationManager.AppSettings.Get( “根”); System.Web.Configuration.WebConfigurationManager.AppSettings.Get( “MySetting”)
答案 1 :(得分:0)
这是一个老问题,但我根据原始帖子在Orchard CMS环境中专门问自己同一个问题,并且我得到了Orchard特定答案。
在Orchard CMS的根目录中,有一个web.config,希望阻止所有用户请求单个静态文件。例如,您不希望人们从Theme文件夹下载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文件),样式(仅包含大量静态css文件)或内容(例如包含静态图像)等子文件夹中,您当然希望允许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:我正在玩Themes,出于某种原因,我必须在所有这些子web.config中的每个<remove name="StaticFile"/>
之前添加<add name="StaticFile"...>
。