我遇到了同样的问题,最初我使用相同的解决方法以管理员身份启动 Visual Studio。
最后我尝试做一些测试并得到了这个:如果你为 web.config 创建一个文件映射,应用程序会在没有管理员权限的情况下加载配置。
我使用了http://msdn.microsoft.com/en-us/library/system.web.configuration.webconfigurationmanager.openmappedwebconfiguration(v=vs.110).aspx中的示例,但进行了一些修改:
public static Configuration GetConfiguration()
{
if (HostingEnvironment.ApplicationVirtualPath == "/")
return WebConfigurationManager.OpenWebConfiguration("~/web.config");
WebConfigurationFileMap fileMap = CreateFileMap(HostingEnvironment.ApplicationVirtualPath);
// Get the Configuration object for the mapped virtual directory.
return WebConfigurationManager.OpenMappedWebConfiguration(fileMap, HostingEnvironment.ApplicationVirtualPath);
}
private static WebConfigurationFileMap CreateFileMap(string applicationVirtualPath)
{
WebConfigurationFileMap fileMap =
new WebConfigurationFileMap();
// Get he physical directory where this app runs.
// We'll use it to map the virtual directories
// defined next.
string physDir = HostingEnvironment.ApplicationPhysicalPath;
// Create a VirtualDirectoryMapping object to use
// as the root directory for the virtual directory
// named config.
// Note: you must assure that you have a physical subdirectory
// named config in the curremt physical directory where this
// application runs.
VirtualDirectoryMapping vDirMap =
new VirtualDirectoryMapping(physDir, true);
// Add vDirMap to the VirtualDirectories collection
// assigning to it the virtual directory name.
fileMap.VirtualDirectories.Add(applicationVirtualPath, vDirMap);
// Create a VirtualDirectoryMapping object to use
// as the default directory for all the virtual
// directories.
VirtualDirectoryMapping vDirMapBase =
new VirtualDirectoryMapping(physDir, true, "web.config");
// Add it to the virtual directory mapping collection.
fileMap.VirtualDirectories.Add("/", vDirMapBase);
// Return the mapping.
return fileMap;
}
我认为这不是一个很酷的修复,但它可以工作并且可以包含在#if DEBUG 部分中。
有了这些,我推断当您启动 Visual Studio Web 开发服务器并将虚拟路径设置设置为“/MyApplication”之类的设置时,如果它已以管理员权限启动,它会创建一些映射,它在没有权限时不会创建。这只是一个我无法验证的假设。
我希望这对其他人有帮助!