错误 - 无法访问IIS元数据库

jja*_*man 832 .net c# iis

安装Visual Studio 2012并打开我的解决方案后,我遇到了以下形式的一系列错误:

Web应用程序项目Foo配置为使用IIS.
无法访问IIS元数据库.您没有足够的权限访问计算机上的IIS网站.

我为每个Web应用程序都得到了这个.我尝试过的事情:

  1. 以管理员身份运行Visual Studio
  2. 运行aspnet_regiis.exe -ga MyUserName
  3. 运行aspnet_regiis.exe -i

这些似乎是这个问题的常见解决方案,但我没有取得任何成功.还有什么我可以尝试做的吗?

小智 1434

Windows 8 Pro上:

%systemroot%\inetsrv\config
Run Code Online (Sandbox Code Playgroud)

Windows 7和8.1和10上

%systemroot%\System32\inetsrv\config 
Run Code Online (Sandbox Code Playgroud)

(%systemroot%通常在哪里C:\Windows)

在Windows资源管理器中导航到上面的相应位置.您将被弹出窗口阻止访问:

"您无权访问此文件夹 - 单击"继续"以永久访问此文件夹"

单击此文件夹的"继续",然后单击下面的"导出"文件夹.我将快捷方式更改回"以我身份运行"(域和本地管理员的成员)并能够打开和部署解决方案.

  • Windows 8.1上的%systemroot%\ System32\inetsrv\config(即C:\ WINDOWS\System32\inetsrv\config)运行良好 (82认同)
  • 它工作,谢谢.只需一个注释,config文件夹可以位于C:\ Windows\System32\inetsrv\config中 (44认同)
  • @Nate,问题是当VS加载项目时,它会尝试访问该目录中的IIS元数据库.您的计算机上的IIS在管理员权限下被锁定.因此,当您以普通用户身份打开VS时,无法访问IIS的配置数据库,VS无法加载项目.(在Windows 7+上,您默认以普通用户身份访问*所有*.问题是VS不会要求您在需要时提升您的权限,因此您需要手动授予访问该目录的权限你自己.) (44认同)
  • %systemroot%\ System32\inetsrv\config是Windows 7的正确路径 (13认同)
  • Windows 10的`%systemroot%\ System32\inetsrv\config`也是如此. (5认同)
  • %systemroot%\ System32\inetsrv\config对于Windows 10 64位无效. (2认同)
  • 我找不到在何处“将快捷方式改回以我的身份运行”,但是我唯一要做的就是打开“导出”文件夹,它可以正常工作。 (2认同)

小智 246

我认为你没有运行具有管理员权限的visual studio.看那个:

http://bloggingabout.net/blogs/rick/archive/2012/10/04/unable-to-access-the-iis-metabase.aspx

报价

解决方案很简单:使用"以管理员身份运行"启动Visual Studio.您可以通过右键单击快捷方式并选择"以管理员身份运行"来执行此操作.

  • -1来自我.这篇博客促使IDE一直以管理员身份运行.这将导致编写正确代码的101个问题,这些代码在用户希望/需要部署到的安全受限环境中正常工作.最好解决每个安全问题,因为它在开发过程中出现(作为对代码的每个部分进行测试)并记录用户/安装程序所需的解决方案,而不是在滚动之前关闭此Run-as-Administator.发布并希望您的测试人员能够找到您遇到的所有安全问题(裂缝). (21认同)
  • 如果你想避免每次(恕我直言,这是一个更好的解决方案)中运行你的视觉工作室担任管理员的疼痛,然后检查由GordonK2004响应. (13认同)
  • @DarrylMiles Care分享一个真实世界的例子,这样做会导致安全问题? (5认同)
  • 这是一个可怕的答案,真正令人遗憾的是它到目前为止已被投票.作为管理员运行VS是一种解决方法,而不是解决方案. (5认同)

Jef*_*f B 50

我认为我们在工作中遇到了类似的问题.对我们来说,解决方案是进入控制面板 - >程序和功能 - >打开或关闭Windows功能......在其中,我们必须选择Internet信息服务 - > Web管理工具 - > IIS 6管理兼容性 - > IIS Metabase和IIS 6配置兼容性. Windows功能对话框显示IIS Metabase选项

尝试一下,让我知道它是否有帮助!

注意:我们使用Visual Studio 2005和2010在Windows 7上运行IIS 7.5并使用超老派WebServices(.asmx)进行操作...


小智 33

我通过向IIS授予IIS AppPool身份权限来解决此问题 %systemroot%\inetsrv\config

  • 完善!不再需要打扰作为管理员运行.Win 7的文件夹位于:C:\ Windows\System32\inetsrv\config (9认同)
  • 应该是%systemroot%\ system32\inetsrv\config (3认同)

nol*_*ogo 27

如果您正在处理不需要使用IIS的项目,那么使用此错误打开项目的解决方法是只需右键单击卸载的项目并单击编辑,搜索:

<ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="">
        <WebProjectProperties>
          <UseIIS>True</UseIIS>
        </WebProjectProperties>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>
Run Code Online (Sandbox Code Playgroud)

并将USEIIS设置为false

<UseIIS>False</UseIIS>
Run Code Online (Sandbox Code Playgroud)

保存更改后右键单击项目重新加载项目.

  • 这有助于解决无法使用IIS的问题? (4认同)

jmo*_*eno 18

我有两个单独的问题类型导致这个错误,并认为我分享...

1. The directory was on an network share and due to UAC restrictions, was 
   unable to be accessed -- even when running as an admin.
2. The directory was on a drive that didn't exist...
Run Code Online (Sandbox Code Playgroud)

这两者都源于MS不幸(imo)选择将内容放入Documents或My Document目录中,并结合非常糟糕的错误消息.在上述两种情况下,基本问题是IISExpress Config文件进入My Documents,它要么不存在,要么无法访问.

  • 我们的VPN经常死掉,并且``HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal``指向不存在的文件共享.将其更改为本地路径为我解决了这个问题. (7认同)

jja*_*man 13

谢谢所有回答的人.由于这已经关闭了很长时间,我无法提供太多反馈,但我最终解决了我的问题.我尝试了很多这些其他的解决方案,他们没有解决我的问题,但我确信他们会在根本原因不同时提供帮助.

我的解决方案

我通过关闭Windows 7中的IIS和.Net Framework功能然后重新打开它来解决了这个问题.似乎这次重新安装是解决我的问题的原因.我仍然不知道导致问题的原因,但我团队中至少有一位其他开发人员遇到了同样的问题.


lna*_*aie 13

在Windows 81上,从管理命令提示符处,使用:

icacls "C:\Windows\System32\inetsrv\config" /t /grant "IIS AppPool\DefaultAppPool":(R)
Run Code Online (Sandbox Code Playgroud)

然后返回VS,右键单击失败的项目,选择Reload.

感谢:IIS7权限概述 - ApplicationPoolIdentity

  • +1而不是授予对DefaultAppPool的访问权限,我给了我的用户读/写权限并修复了错误. (2认同)

sar*_*key 12

我遇到了这个问题 - 症状是一样的,但我遇到的问题是我将"我的文档"文件夹设置为网络共享,并且共享无法访问.

根本问题是无法访问位于%USERPROFILE%\ Documents的IIS配置文件.一旦我更改了"我的文档"文件夹位置(我修改了reg值),它就重新开始工作了.

我知道这可能不是您可能遇到的常见情况,但我在此处发布它是因为它给出了相同的症状.


小智 11

导航到文件夹:%systemroot%\System32\inetsrv\config显示安全对话框.单击继续,这可能会解决此问题.这适用于两台独立的Win 10/VS 2017/IIS机器.


Rus*_*hby 7

我今天遇到了这个并通过从Project文件中删除IISUrl来解决问题:

  1. 右键单击项目
  2. 单击编辑
  3. 删除以下行:

     <IISUrl>http://localhost:xxxxx </IISUrl>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新加载项目

  5. 现在,通过右键单击"项目">"属性">"Web"并选择"使用本地IIS Web服务器(取消选中使用IIS Express)"并单击"创建虚拟目录"按钮,添加新的IIS虚拟目录.


Tom*_*kel 7

您可能遇到此问题并遇到与我相同的问题.我之前"解决"了它然后断电和计算机崩溃,不知道为什么注册表设置还原但它是我的问题的来源.

  1. 我尝试了所有正在运行的管理员
  2. 所有IIS/IIS都重新安装.
  3. 各种"黑客"

归结为必须再次修复注册表.

  1. 无法作为管理员甚至打开注册表(需要访问注册表,因为问题不是与gpedit.msc管理模板)

  2. UnHookExec.inf在桌面上

只需保存UnHookExec.inf并通过右键单击并选择安装即可安装它.安装文件不会显示任何弹出或通知框. http://www.tweakandtrick.com/2011/04/enable-regedit-registry-editor.html

  1. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal指向不存在的文件共享.将其更改为本地路径为我解决了这个问题. - Pasi Savolainen 2014年7月14日8:41

(从改变 \\cs2data\home\stickelt\my documentsc:\dev )

现在一切都很好,Visual Studio打开了15个项目的解决方案并连接到IIS并且没有抱怨无法访问iis元数据

我之前从未遇到过这种情况,因为当前工作中没有人遇到过这个问题(许多人已经在这里待了很长时间,有些人得到了其他机器的克隆"工作"而且很多都在另一个领域等等.)


小智 6

我今天刚遇到这个问题,我发现我没有打开VS作为"以管理员身份运行".在这之后,我能够发布服务.