简体   繁体   English

如何从web.config中读取system.web部分

[英]How to read system.web section from web.config

Should be simple, but whatever I try returns null: 应该很简单,但无论我尝试什么都返回null:

const string key = "system.web";

var sectionTry1 = WebConfigurationManager.GetSection(key);

var sectionTry2 = ConfigurationManager.GetSection(key);

I'm sure I have done this before. 我相信我以前做过这件事。

I am using MVC if this makes a difference. 如果这有所作为,我正在使用MVC。

Was being an idiot - system.web is not a config section but a config group. 是一个白痴 - system.web不是配置部分,而是配置组。 If I change the key to an actual section, then both methods work fine. 如果我将密钥更改为实际部分,则两种方法都可以正常工作。 Here's the one using ConfigurationManager: 这是使用ConfigurationManager的那个:

const string outputCacheSettingsKey = "system.web/caching/outputCacheSettings";           

var outputCacheSettingsSection = ConfigurationManager.GetSection(outputCacheSettingsKey) as OutputCacheSettingsSection;

I think accessing system.web is slightly different to accessing appSettings. 我认为访问system.web与访问appSettings略有不同。

Try this: 尝试这个:

string configPath = "/MyAppRoot";

Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);

IdentitySection section = (IdentitySection)config.GetSection("system.web/identity");

You need to cast the relevant section of system.web you're trying to access to a particular type. 您需要强制转换system.web的相关部分,并尝试访问特定类型。

This worked for me: 这对我有用:

public Int32 GetmaxRequestLength()
{
    // Set the maximum file size for uploads in bytes.
    var section = ConfigurationManager.GetSection("system.web/httpRuntime") as HttpRuntimeSection;
    // return length converted to kbytes or return default value as specified
    return (Int32) Math.Round((decimal)(section != null ? (double)section.MaxRequestLength * 1024 / 1000 : 5.120), 2);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM