加载配置文件时出错:无法映射路径'/'

2 .net asp.net web-config relative-path

我收到配置文件时出错:无法映射路径'/'.当我尝试运行以下行来获取web.config的路径时

Configuration config =System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
Run Code Online (Sandbox Code Playgroud)

我正在运行Windows 7,Visual Studio 2010和.net framework 4.0.现在我知道通过以管理员身份运行visual studio解决了这个问题,我在以管理员身份运行之前已经多次运行相同的代码,但是今天以管理员身份运行也没有解决问题.我在我的队友的笔记本电脑上运行相同的代码,代码工作正常,当我在我的笔记本电脑上运行该代码时,它不起作用.

我已经尝试了一切,有没有办法可以给出一个绝对的路径以使它暂时工作,我的窗户可能是一个问题,因为它最近状况不佳.请帮忙,因为它浪费了我很多时间

ror*_*ax2 5

我遇到了同样的问题,最初我使用的是以管理员身份启动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;
    }
Run Code Online (Sandbox Code Playgroud)

我认为这不是一个非常酷的修复,但它可以工作,可以包含在#if DEBUG部分.

有了这些,我推断当你启动Visual Studio Web开发服务器时,将虚拟路径设置设置为"/ MyApplication",如果它已经以管理员权限启动,它会创建一些在没有权限时不会创建的映射.这只是一个我无法验证的假设.

我希望这会有助于他人!