ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

我为我们的每个 Web 应用程序都得到了这个。

我尝试过的事情:

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

这些似乎是解决此问题的常见解决方案,但我对它们没有任何成功。

还有什么我可以尝试做的吗?

您确定以管理员身份运行吗?启动 VS 时是否会弹出用户帐户控制对话框?
我遇到了同样的问题,当我以管理员身份运行 VS(右键单击并选择以管理员身份运行)时,它起作用了
对于后来来到这里的任何人,我通过关闭 Windows 7 中的 IIS 和 .Net Framework 功能然后重新打开它们来解决这个问题。在重新安装的某个地方,它解决了我的问题。
在您遵循此处发布的任何建议之前,请检查您是否有待处理的 Windows 更新。我有很多需要重新启动,完成更新解决了问题。
添加功能 from this link 后我遇到了同样的问题,然后我阅读了 this article,问题就消失了。

A
Atron Seige

在 Windows 8 专业版上:

%systemroot%\inetsrv\config

在 Windows 7 和 8.1 和 10 上

%systemroot%\System32\inetsrv\config 

(其中 %systemroot% 通常是 C:\Windows

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

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

单击此文件夹的“继续”,并在下方显示“导出”文件夹。我将快捷方式改回“以我身份运行”(域和本地管理员的成员),并且能够打开和部署解决方案。


它奏效了,谢谢。请注意,配置文件夹可以位于 C:\Windows\System32\inetsrv\config
Windows 8.1 上的 %systemroot%\System32\inetsrv\config (即 C:\WINDOWS\System32\inetsrv\config)效果很好
%systemroot%\System32\inetsrv\config 是 Windows 7 的正确路径
@Nate,问题是当 VS 加载项目时,它会尝试访问该目录中的 IIS 元数据库。您计算机上的 IIS 在管理员权限下被锁定。所以当你以普通用户打开VS时,无法访问IIS的元数据库,VS也无法加载项目。 (在 Windows 7+ 上,默认情况下您以普通用户身份访问所有内容。问题是 VS 不会在需要时要求您提升权限,因此您需要手动授予自己访问该目录的权限。 )
%systemroot%\System32\inetsrv\config 也适用于 Windows 10。
F
Felipe Ardila

我认为您没有以管理员权限运行 Visual Studio。看那个:

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

去引用

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


我肯定以管理员身份运行。我确实收到了 UAC 提示,它从那里成功启动。我也将它与 VS2010 一起使用。
如果您想避免每次都以管理员身份运行 Visual Studio 的痛苦(恕我直言,这是一个更好的解决方案),请检查 GordonK2004 的响应。
我的-1。这个博客一直提倡以管理员身份运行IDE。这将使您在编写正确的代码时遇到 101 个问题,这些代码在您的用户想要/需要部署到的安全受限环境中正常工作。解决每个安全问题要好得多,因为它在开发中突然出现(当您测试代码的每个部分时)并记录用户/安装程序所需的解决方案,而不是在您推出之前关闭此 Run-as-Administator发布并希望您的测试人员找到您贴在墙纸上的所有安全问题(裂缝)。
@DarrylMiles 关心分享一个真实世界的例子,这样做会导致安全问题吗?
这是一个糟糕的答案,真的很遗憾到目前为止它已经被赞成了。以管理员身份运行 VS 是一种变通方法,而不是解决方案。
J
Jeff B

https://i.stack.imgur.com/pa800.png

试试看,如果有帮助,请告诉我!

注意:我们在 Windows 7 上使用 Visual Studio 2005 和 2010 运行 IIS 7.5,并使用超级老式的 WebServices (.asmx)...


我尝试了所有其他解决方案(配置文件夹权限,不使用 IIS,以管理员身份运行 VS,重新启动 IIS 等),但这是唯一对我有用的解决方案。感谢分享!
谢谢,这对我也有帮助。我正在使用 VS2013,项目文件的配置文件结构与 Bruno Sena 的答案不同。我正要拔掉头发,但后来我记得我很大胆,并选择尝试这个解决方案,这是一个快速的解决方案。
确保 IIS Admin service 已启动并将启动类型设置为自动而不是禁用。
根据您的配置的限制程度,这可能还需要管理员权限。
n
nhahtdh

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


完美的!不再需要以管理员身份运行。 Win 7 的文件夹位于:C:\Windows\System32\inetsrv\config
这对我也有用,Windows 8.1、IIS 7.0、VS 2012。非常感谢
应该是 %systemroot%\system32\inetsrv\config
k
kira_codes

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

<ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="">
        <WebProjectProperties>
          <UseIIS>True</UseIIS>
        </WebProjectProperties>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>
</Project>

并将 USEIIS 设置为 false

<UseIIS>False</UseIIS>

保存更改后通过右键单击重新加载项目。


这对我有用,但这里的根本问题是什么?它在我的台式机上一定是假的,但在我的笔记本电脑上是真的。因此,如果我将一个项目签入笔记本电脑上的 TFS,它无法在我的桌面上加载,反之亦然,直到我更改此设置。
这如何帮助解决无法使用 IIS 的问题?
设置 <UseIIS>False</UseIIS> 无效。节点 <UseIISExpress>true</UseIISExpress> 也存在。将其设置为 false 没有帮助。仍然需要对 iis 元数据库进行相同的错误访问。
这对我“有效”,似乎对此感到困惑。大多数项目可以在个人本地机器上的 iis express 下运行。有些项目需要完整的 IIS。我需要做的就是在 VS 中加载项目,这样我就可以查看它了。如果我尝试在 express 下运行它,它可能会出现某种运行时错误。其他实际开发此项目并在本地进行测试的开发人员会花时间在本地安装 IIS。所以这并不能解决运行时问题。但是,有人需要在 VS 中加载它,以便他们可以解决运行时问题,所以这是一个有效的答案。
C
Community

我有两种不同类型的问题导致此错误,并认为我会分享...

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...

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


你是如何解决问题的。我想我面临着两个问题之一。
确保 Projects 目录和 My Documents 目录都位于本地磁盘驱动器上。我把它们都放在 C:\.
我们的 VPN 经常死机并留下 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal 指向不存在的文件共享。将其更改为本地路径为我解决了这个问题。
我的解决方案是将 IISExpress 文件夹从另一台机器上的 Documents 文件夹复制到我的新机器上,然后事情就开始工作了。
j
jjathman

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

我的解决方案

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


N
Neuron

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


这以前也对我有用。今天,在一台新笔记本电脑上尝试,导航到该文件夹时没有出现安全对话框,我根本无法进入配置目录。我必须右键单击并更改文件夹的权限(这需要使用我的本地管理员访问权限)并给自己权限,然后它才起作用。
C
Community

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

icacls "C:\Windows\System32\inetsrv\config" /t /grant "IIS AppPool\DefaultAppPool":(R)

然后回到VS,右键点击失败的项目,选择Reload。

归功于:IIS7 Permissions Overview - ApplicationPoolIdentity


不会。这将为以该身份运行的 Web 应用程序池授予对 IIS 配置的读取权限。 Visual Studio 不以这个身份运行,所以它对这个问题没有帮助。此外,为什么要让应用程序池访问 IIS 配置?那是自找麻烦。
+1,但我没有授予对 DefaultAppPool 的访问权限,而是向我的用户授予了读/写访问权限并修复了错误。
我和大卫一样,除了完全控制(F),它解决了我的问题。
s
sargeMonkey

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

根本问题是位于 %USERPROFILE%\Documents 的 IIS 配置文件不可访问。一旦我更改了“我的文档”文件夹位置(我修改了 reg 值),它又开始工作了。

我知道这可能不是您可能遇到的常见情况,但我已将其发布在这里,因为它给出了相同的症状。


我们在虚拟机中工作,同事最终设置了一个共享文件夹,该文件夹最终将“我的文档”文件夹用于网络路径。正如这个答案所述,如果没有文档文件夹,它就无法工作。我会在以后检查这个文件夹是否可用,以节省我们花在阅读这些帖子和诸如此类的 2 小时上的时间。
我也有这个问题。我的文档文件夹位于网络共享上,并且网络问题阻止访问。一旦我解决了网络问题,Visual Studio 就会停止给出 IIS 元数据库错误。
R
Rushby

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

右键单击项目 单击编辑 删除以下行: http://localhost:xxxxx 重新加载项目 现在通过右键单击项目 > 属性 > Web 并选择使用本地 IIS Web 服务器来添加一个新的 IIS 虚拟目录(取消选中使用 IIS Express)并单击创建虚拟目录按钮。


这不会解决 OP 问题,因为当您收到此错误时,您无法打开项目来更改 URL。
我部分不同意@htm11h。我遇到了 OP 的错误并删除了上面的单个条目(在 VS 之外)。然后我运行 VS 并且至少能够打开属性。但它不允许我保存编辑,所以我必须打开 %systemroot%\System32\inetsrv\config 一次并以管理员身份继续;也打开 %systemroot%\System32\inetsrv\config\Export 并做同样的事情。 (error-unable-to-access-the-iis-metabase)
我的评论是,正如您所指出的,它无法从 VS 中修复。很高兴知道您可以直接编辑该文件,但当时尚未识别。大多数人都在寻找 reg hack。
T
Tom Stickel

你可能会遇到这个问题并且和我有同样的问题。我之前“解决”了它,然后停电和计算机崩溃,不知道为什么注册表设置恢复,但它是我问题的根源。

我尝试了所有以管理员身份运行的所有 IIS / IIS express 重新安装。各种“黑客”

归结为不得不再次修复注册表。

甚至无法以管理员身份打开 regedit(需要访问注册表,因为问题不在于 gpedit.msc 管理模板)桌面上的 UnHookExec.inf

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

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

(从 \\cs2data\home\stickelt\my documents 更改为 c:\dev

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

我以前从来没有遇到过这个问题,因为目前的工作没有人遇到这个问题(很多人已经在这里很长时间了,有些人克隆了其他“工作”的机器,很多人在另一个域上等等。)


S
Saurabh Soni

我今天刚遇到这个问题,我发现我没有以“以管理员身份运行”打开 VS。完成此操作后,我能够发布服务。


R
Ramazan Sağır

如果您有管理员权限,请右键单击 Visual Studio 图标 > 属性,然后高级,“以管理员身份运行”检查。您可以直接以管理员身份运行 visaul studio。这样,正式而基本。


C
Community

除了@nologo 的answer,我还必须使用 IIS。所以我改变了

<UseIIS>True</UseIIS>

先说“假”。

打开解决方案并确保可以加载项目。

关闭解决方案和该 Visual Studio 实例

再次将值更改为“真”

打开解决方案。这一次,我没有收到任何错误/警告。当我的项目映射到 IIS 网站时,我也可以毫无问题地使用 Ctrl+F5 或 F5 运行。


这对我使用 VS 2015、Win10 有所帮助。这里有用的提示,讨厌的问题。非常感谢。
这是在 web.config 中吗?如果有,在哪里?
@BobHorn 这是在 csproj 或 vbproj 文件中。在文本编辑器中打开文件。
g
garryp

更改此密钥对我有用:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal

该位置不存在。


我必须更改您提到的密钥,并且 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal。这是由于配置文件路径设置为 Active Directory/组策略中不存在的目录。
第三个罪魁祸首是 HKEY_CURRENT_USER\Software\Microsoft\IISExpress,它是一个覆盖自定义目录,也是此问题的另一个潜在罪魁祸首
E
E2rdo

转到项目的根目录并找到以下文件:YourProjectName.csproj.user - 在其中,确保 UseIISExpress 设置为 false:

<UseIISExpress>false</UseIISExpress>

如果仅此一项不起作用,请尝试以下操作,然后重试:

YourProjectName.csproj - 在主项目文件中,确保 UseIIS 和 UseIISExpress 都设置为 false:

<UseIIS>True</UseIIS>
<UseIISExpress>false</UseIISExpress>

更改这些后,我能够再次加载项目。

注意:请确保您以管理员身份运行 VS,如其他答案中所述。


F
Francis Rodgers

我也有类似的问题。我的解决方案是对“以管理员身份运行”答案的扩展,我希望有人会觉得它有用。

我正在运行 VS2012,几乎每次我都必须右键单击,以管理员身份运行。我对此感到厌倦,所以我进入快捷方式的属性,单击高级,然后单击“以管理员身份运行”选项。现在,每当我从该快捷方式打开 VS2012 时,它总是以管理员身份运行。

从那个快捷方式开始很重要。我继续分支我的项目,并将分支下载到新的本地文件夹。然后,当我从快捷方式打开它时,我没有问题。但是如果我直接进入该文件夹,并在没有快捷方式的情况下在本地运行项目,它没有以管理员身份运行,我得到了这个错误。

一旦我像往常一样首先打开 VS2012,然后使用 File/Open/Project 它再次工作没问题。 (因为我以管理员身份运行)。但是当我使用 Windows 文件管理器打开解决方案时,我没有以管理员身份运行。

其他建议似乎有些极端,但这很简单,所以我倾向于先尝试一下。

希望这会有所帮助。


N
Nathan Tregillus

这似乎是“所有错误都会导致此消息”类型的错误之一。

我的是应用程序池刚刚关闭。我重新打开它,一切正常。


T
Thomas Eyde

您还可以尝试一件事:

检查您是否有待处理的 Windows 更新。

如果这样做,请在尝试其他任何操作之前重新启动。

我往往从不关闭我的机器,所以我有很多人在等待重启。这解决了它。


s
scottt732

我尝试了上面的一切。归功于上述所有回复。在自己尝试了所有建议之后,我只是按照对我来说有意义的顺序组合了这些建议组合。请注意,我的 Documents 文件夹位于共享驱动器上。除非你在同一条船上,否则 subst/IISExpress 的东西不适用。

配置 VS 以管理员身份运行

通过添加/删除程序、Windows 功能卸载 IIS

重启

运行 WinRAR 或类似管理员和存档 C:\windows\system32\inetsrv\

以管理员身份运行 cmd 并运行 rmdir /sc:\windows\system32\inetsrv\ 以完全删除上次安装的所有痕迹。将提升的 cmd 提示打开以供以后使用。

重新安装具有 IIS 6 Metabase 兼容性的 IIS(怀疑这是必要的)

保留默认 AppPool 和默认网站原样(我之前已将两者都删除)

跑 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ga MYDOMAIN\scottt732

跑 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

此外,由于我的 Documents 文件夹位于共享驱动器上,因此我遇到了 IIS Express 问题。我不使用/不喜欢 IIS Express,但 Visual Studio 抱怨它。

从提升的 cmd 提示符下,运行 subst U: c:\Temp。创建 C:\Temp\Documents\ 并从我的 U 盘复制 IISExpress 文件夹。

使用 C:\Temp\Documents\IISExpress 在 HKCU\Software\Microsoft\IISExpress 中创建 CustomUserHome 键

这让我可以让 Visual Studio 打开我的 Web 项目并编辑属性。我调整了项目以将 Web 服务器设置存储在用户文件中,并将其调整为使用自定义 URL(不确定是否有必要)

每次重新启动时,我可能/可能不必运行 subst 命令。别在意。

在放弃 3 次并花费大约 6 小时后,我可以在 Visual Studio(2015 更新 2)中打开 Web 项目。


未来我的注意事项:我将 Windows 10 更新为预览版,但它又坏了。这次我运行了 2x aspnet_regiis 和 subst 命令并重新开始工作。哦。别忘了给你的手表上发条。
K
KMX

我今天也遇到了同样的问题。我发现它很烦人。虽然我已经从同一个 IIS 开发了另外两个网站,但仍然无法创建新网站。奇怪,但我做到了。

从 IIS 中删除站点

创建新站点,将其命名为“new_site”

选择站点名称本身以外的应用程序池。所以它不会破坏默认设置。

如果您从同一台机器上运行它,请保持 IP“未分配”

给它一些未使用的端口

通过右键单击 VS 可执行快捷方式以“以管理员身份运行”运行 Visual Studio。

你完成了!

除了我所说的以外,您不需要关闭/重新安装任何东西,因为它可以工作。

让我知道是否有人像我一样遇到同样的问题并以同样的方式解决。我认为这不是问题,而是在 Visual Studio 拒绝打开的 localhost 上创建网站的错误方式。

我希望这会对新手有所帮助。


M
Mauricio Gracia Gutierrez

创建“devenv.exe”的快捷方式选择快捷方式的“以管理员身份运行”选项双击快捷方式并重新打开您的项目


C
Community

this link 添加功能后我遇到了同样的问题,然后我跟着 this article 问题消失了。


K
Kenmeister

我修复了 Visual Studio 2015 来解决这个问题。修复花了很长时间,但它解决了问题,而上面的大部分内容都没有。我正在运行 Win 7 企业版。


佚名

打开 Visual Studio 命令提示符并键入以下命令并运行

aspnet_regiis -ga machinename\ASPNET

运行上述命令后重置 IIS 并测试解决您的问题的应用程序。

如果上述命令不能解决您的问题,请尝试在 visual studio command prompt:- 中运行以下命令

aspnet_regiis -i

或者,我们也可以从 Windows 命令提示符运行上述命令

转到开始菜单并打开运行并输入并单击 OK

%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe –I

之后重置 IIS 并测试解决您的问题的应用程序


A
Arvind Krmar

在 Visual Studio 2015 中:我将 .csproj 文件中的 UseIIS 更改为 false,它对我有用。

<UseIIS>False</UseIIS>

u
user2686690

在我的消息中,除了抱怨“无法访问 IIS 元数据库”之外,还提到无法访问 "<IISUrl>http://localhost:6416/</IISUrl>"。右键单击卸载项目,单击编辑,找到"<IISUrl>http://localhost:6416/</IISUrl>"行,将其注释掉。重新加载,它应该工作。这与管理员无权访问该地址有关。


J
JGa

我有一个类似的问题。 Visual Studio 不会加载任何 Web 项目并显示错误:创建虚拟目录 失败。无法访问 IIS 元数据库。

就我而言,问题的根源实际上是 IISExpress。在控制面板的程序和功能中右键单击 IIS Express,然后选择修复,不到两分钟就解决了这个问题。


Y
Yossi

我正在使用 Win 8 Pro 和 VS 2013。在尝试了此页面中的所有内容之后......我只是重新安装了 IIS Express 8,现在一切正常(即使没有以管理员身份运行)。

我的结论是,这是一个相当普遍的错误,并且有多个根本原因。