aro*_*ron 35 web-config virtual-path webconfigurationmanager c#-3.0
我有一个在IIS7中创建网站的win表单.一个函数需要打开web.config文件并进行一些更新.(连接字符串,smtp,模拟)
但是我没有虚拟路径,只有物理路径.
有什么办法我还可以使用WebConfigurationManager吗?
我需要使用它来查找节和读/写的能力.
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration
Run Code Online (Sandbox Code Playgroud)
Vad*_*bak 66
您必须将physicalPath映射到virtualPath.这是你如何做到这一点.
using System.Web.Configuration; //Reference the System.Web DLL (project needs to be using .Net 4.0 full, not client framework)
public static Configuration OpenConfigFile(string configPath)
{
var configFile = new FileInfo(configPath);
var vdm = new VirtualDirectoryMapping(configFile.DirectoryName, true, configFile.Name);
var wcfm = new WebConfigurationFileMap();
wcfm.VirtualDirectories.Add("/", vdm);
return WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/");
}
Run Code Online (Sandbox Code Playgroud)
Kei*_*ith 10
Vadim的答案在我们的开发服务器上运行得很好,但在我们的实时服务器上轰炸了以下消息:
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: site
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我发现了另一个重载WebConfigurationManager.OpenMappedWebConfiguration
,它将IIS网站名称作为第三个参数.结果如下:
public static Configuration OpenConfigFile(string configPath)
{
var configFile = new FileInfo(configPath);
var vdm = new VirtualDirectoryMapping(configFile.DirectoryName, true, configFile.Name);
var wcfm = new WebConfigurationFileMap();
wcfm.VirtualDirectories.Add("/", vdm);
return WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/", "iis_website_name");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22778 次 |
最近记录: |