错误-无法访问IIS配置数据库


842

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

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

对于我们的每个Web应用程序,我都会得到它。


我尝试过的事情:

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

这些似乎是解决该问题的常用方法,但是我在这些方法上没有取得任何成功。

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


27
您肯定以管理员身份运行吗?启动VS时会弹出“用户帐户控制”对话框吗?
Mike Simmons 2012年

43
我遇到了同样的问题,当我以管理员身份运行VS(右键单击并选择以管理员身份运行)时,它起作用了
Shyju 2012

4
对于以后来到这里的任何人,我都通过关闭Windows 7中的IIS和.Net Framework功能并重新打开它们来解决此问题。在重新安装的某个地方,它解决了我的问题。
jjathman

2
在您遵循此处发布的任何建议之前,请检查是否有未决的Windows更新。我有很多东西需要重新启动,完成更新可以解决问题。
Thomas Eyde 2014年

2
从此链接添加功能后,我遇到了同样的问题,然后阅读本文 ,问题不再存在。
JB的

Answers:


1447

Windows 8 Pro上

%systemroot%\inetsrv\config

Windows 7、8.1和10上

%systemroot%\System32\inetsrv\config 

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

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

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

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


44
很好,谢谢。请注意,配置文件夹可以位于C:\ Windows \ System32 \ inetsrv \ config
Alexandr Nikitin

82
Windows 8.1上的%systemroot%\ System32 \ inetsrv \ config(即C:\ WINDOWS \ System32 \ inetsrv \ config)效果很好
stefano

13
%systemroot%\ System32 \ inetsrv \ config是Windows 7的正确路径
Aidin

44
@Nate,问题在于,当VS加载项目时,它将尝试访问该目录中的IIS元数据库。您计算机上的IIS在管理员权限下被锁定。因此,当您以普通用户身份打开VS时,您将无法访问IIS的配置数据库,而VS无法加载项目。(在Windows 7+上,默认情况下,您以普通用户身份访问所有内容。问题在于VS不会在需要时要求您提升特权,因此您需要手动向自己授予访问该目录的权限。 )
PotatoEngineer 2014年

5
%systemroot%\System32\inetsrv\config也适用于Windows 10。
bonh,2015年

248

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

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

报价

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


我绝对是以管理员身份运行。我确实收到UAC提示,并且从那里成功启动。我也将它与VS2010一起使用。
jjathman 2012年

13
如果要避免每次以管理员身份运行Visual Studio的麻烦(IMHO是更好的解决方案),请检查GordonK2004的响应。
艾丁

21
-1来自我。此博客提倡始终以管理员身份运行IDE。这将使您陷入101种编写正确的代码的问题,这些代码可以在用户希望/需要部署到的受安全限制的环境中正常工作。解决每一个安全问题时,要解决它(在测试代码的每个部分时都很好)并记录用户/安装程序所需的解决方案,比在滚动数据库之前关闭“运行身份管理器”要好得多。发布并希望您的测试人员能够找到您在墙纸上遇到的所有安全隐患(裂缝)。
Darryl Miles

5
@DarrylMiles Care分享了一个真实的例子,在这个例子中这样做引起了安全问题?
user247702 2014年

5
这是一个可怕的答案,很遗憾,到目前为止,它已经被赞成。以管理员身份运行VS是一种解决方法,而不是解决方案。
Jansky

51

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

试试看,让我知道是否有帮助!

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


1
我尝试了所有其他解决方案(配置文件夹权限,不使用IIS,以管理员身份运行VS,重新启动IIS等),但这是唯一对我有用的解决方案。感谢分享!
克里斯·奈特

谢谢,这对我也有帮助。我正在使用VS2013,项目文件的配置文件结构与Bruno Sena的答案不同。我本来打算拔头发,但后来我想起来我很胆大,因此选择尝试此解决方案,这是一个快速解决方案。
BraveNewMath 2015年

确保IIS Admin service已启动,并将启动类型设置为自动,而不是禁用。
Ivan Chau

1
根据配置的限制程度,这可能还需要管理员权限。
surfmuggle's

34

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


9
完善!无需再以管理员身份运行。Win 7的文件夹位于:C:\ Windows \ System32 \ inetsrv \ config
btomas

Windows 8.1,IIS 7.0,VS 2012也对我有用。非常感谢
Balthasar

3
应该是%systemroot%\ system32 \ inetsrv \ config
BlackICE 2014年

28

如果您正在从事不需要使用IIS的项目,那么一种解决此错误的方法是,只需右键单击已卸载的项目,然后单击“编辑”,然后搜索:

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

并将USEIIS设置为false

<UseIIS>False</UseIIS>

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


这对我有用,但是这里的根本问题是什么?在我的台式机上必须为false,但在笔记本电脑上为true。因此,如果我将项目签入笔记本电脑上的TFS,则无法在桌面上加载,反之亦然,直到我更改了它。
Derek Ziemba 2014年

5
这如何帮助解决无法使用IIS的问题?
乔纳森·考利-汤姆

设置<UseIIS>False</UseIIS>无效。该节点<UseIISExpress>true</UseIISExpress>也存在。将其设置为false并没有帮助。仍然需要对iis配置数据库进行相同的错误访问。
surfmuggle's

对我而言唯一有效的解决方案
Nick Chan Abdullah,

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

两者都是源于MS不幸的(imo)选择,将内容放入“文档”或“我的文档”目录中,再加上糟糕的错误消息。在上述两种情况下,基本问题是IISExpress Config文件位于“我的文档”中,或者不存在或无法访问。


您是如何解决问题的。我认为我面临着两个问题之一。
塔西斯托

确保“项目”目录和“我的文档”目录都在本地磁盘驱动器上。我把它们都放在C:\上。
jmoreno

7
我们的VPN经常死亡,并HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal 指向不存在的文件共享。将其更改为本地路径对我来说解决了这个问题。
帕西·萨沃拉宁

对我来说,解决方案是将IISExpress文件夹从另一台计算机上的“文档”文件夹复制到新计算机上,然后事情开始起作用。
twhitbeck


13

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

我的解决方案

我通过关闭Windows 7中的IIS和.Net Framework功能并重新打开它们来解决了此问题。似乎此重新安装解决了我的问题。我仍然不知道是什么引起了问题,但是我团队中至少有其他开发人员也遇到了同样的问题。


13

在Windows 81的管理员命令提示符下,使用:

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

然后返回VS,右键单击失败的项目,选择“重新加载”。

归功于IIS7权限概述-ApplicationPoolIdentity


不会。这会将对IIS配置的读取权限授予以该身份运行的Web应用程序池。Visual Studio不能使用此身份运行,因此它对这个问题没有帮助。此外,为什么还要让应用程序池访问IIS配置?那是麻烦。
大卫·布洛克

2
+1而不是授予对DefaultAppPool的访问权限,而是为用户提供了读/写访问权限,从而解决了该错误。
David Schwartz

除了完全控制(F)外,我的操作与David相同,它解决了我的问题。
伯内斯托

13

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


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

12

我遇到了这个问题-症状相同,但是我遇到的问题是我将“我的文档”文件夹设置为在网络共享上,并且该共享不可访问。

根本问题是无法访问位于%USERPROFILE%\ Documents的IIS配置文件。更改“我的文档”文件夹的位置(修改了reg值)后,它再次开始工作。

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


我们在VM中工作,同事最终设置了一个共享文件夹,该共享文件夹最终使用“我的文档”文件夹到达了网络路径。就像这个答案所说的,没有文件文件夹就无法工作。我将检查此文件夹在将来是否可用,以节省我们花在这些帖子上的2小时以及诸如此类的笑话。
托尼

我也有这个问题。我的文档文件夹位于网络共享上,并且网络问题阻止了访问。解决网络问题后,Visual Studio停止提供IIS元数据库错误。
GiddyUpHorsey

7

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

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

     <IISUrl>http://localhost:xxxxx </IISUrl>
  4. 重新载入专案

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

这不会解决OP问题,因为在出​​现此错误时,您无法打开项目来更改URL。
htm11h's

我部分不同意@ htm11h。我遇到了OP的错误,并删除了上面的单个条目(VS之外)。然后,我运行了VS,至少能够打开属性。但是,它不允许我保存所做的编辑,因此我必须打开%systemroot%\System32\inetsrv\config一次并以admin身份继续;也打开%systemroot%\System32\inetsrv\config\Export并做同样的事情。(无法访问iis元数据库
secretwep

我的评论是,正如您指出的,它无法从VS内部修复。很高兴知道您可以直接编辑该文件,但该文件当时没有被识别。大多数人都在寻找注册黑客。
htm11h

7

您可能会遇到此问题,并且与我有同样的问题。我之前“解决”过该问题,然后断电和计算机崩溃,不确定为什么还原了注册表设置,但这是我的问题的根源

  1. 我尝试了所有以管理员身份运行
  2. 重新安装所有IIS / IIS Express。
  3. 各种“骇客”

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

  1. 甚至不能以管理员身份打开regedit(由于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文件夹\指向不存在的文件共享的个人。将其更改为本地路径对我来说解决了这个问题。–帕西·萨沃拉宁(Pasi Savolainen)2014年7月14日在8:41

(从更改 \\cs2data\home\stickelt\my documentsc:\dev

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

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


6

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


4

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


3

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

<UseIIS>True</UseIIS>

首先设为“假”。

  • 打开解决方案,并确保可以加载该项目。
  • 关闭解决方案和该Visual Studio实例
  • 再次将值更改为“ True”
  • 打开解决方案。这次,我没有收到任何错误/警告。当我的项目映射到IIS网站时,我也可以使用Ctrl + F5或F5正常运行。

这对VS 2015 Win10有所帮助。在这里有用的提示,令人讨厌的问题。非常感谢。
peter_the_oak 2015年

这是在web.config中吗?如果是这样,在哪里?
鲍勃·霍恩

@BobHorn这在csproj或vbproj文件中。在文本编辑器中打开文件。
KSK

3

更改此键对我有用:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell文件夹\个人

该位置不存在。


我不得不改变你所提到的,关键 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal。这是由于配置文件路径在Active Directory /组策略中设置为不存在的目录。
Fiddles '16

第三个罪魁祸首是HKEY_CURRENT_USER\Software\Microsoft\IISExpress,它是重写自定义目录,也是这个问题的另一个潜在罪魁祸首
Fiddles

2

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

我运行的是VS2012,几乎每次我都必须执行右键单击(以管理员身份运行)时。我对此感到厌倦,因此改为进入快捷方式的属性,单击“高级”,然后单击“以管理员身份运行”选项。现在,无论何时从快捷方式打开VS2012,它始终以管理员身份运行

快捷键中的至关重要。我继续分支我的项目,并将分支下载到新的本地文件夹。然后,当我从快捷方式打开它时,我没有问题。但是,如果我直接进入该文件夹,并在没有快捷方式的情况下在本地运行该项目,则它没有以管理员身份运行,并且出现此错误。

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

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

希望这会有所帮助。



2

您可以尝试做一件事:

  • 检查您是否有待处理的Windows更新。
  • 如果这样做,请重新启动,然后再尝试其他操作。

我往往从不关闭机器,所以我有很多等待重启。这样就解决了。


2

我尝试了以上所有内容。功劳归于以上所有答复。我自己尝试了所有建议,然后按我认为合理的顺序组合了这些建议。请注意我的文档文件夹在共享驱动器上。除非您在同一条船上,否则subst / IISExpress内容不适用。

  • 配置VS以管理员身份运行
  • 通过Windows功能“添加/删除程序”卸载IIS
  • 重启
  • 运行WinRAR或类似admin和archive的文件 C:\windows\system32\inetsrv\
  • 以admin身份运行cmd rmdir /s c:\windows\system32\inetsrv\完全删除上次安装的所有痕迹。保留提升的cmd提示打开以供以后使用。
  • 重新安装具有IIS 6元数据库兼容性的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:\TempC:\Temp\Documents\从我的U盘创建并复制IISExpress文件夹。
  • 创建CustomUserHome关键在HKCU\Software\Microsoft\IISExpressC:\Temp\Documents\IISExpress
  • 这使我可以使用Visual Studio打开我的Web项目并编辑属性。我对项目进行了调整,以将Web服务器设置存储在用户文件中,并将其调整为使用自定义URL(不确定是否有必要)
  • subst每次重新启动时,我可能/不一定必须运行命令。不在乎

在投入3次并花了大约6个小时之后,我可以在Visual Studio(2015更新2)中打开Web项目。


未来的注意事项:我将Windows 10更新为预览版本,并且再次崩溃。这次我运行了2个aspnet_regiis和subst命令,然后又恢复了正常运行。哦。而且,别忘了给手表上弦。
scottt732 '16

2

转到项目的根目录并找到以下文件:

YourProjectName.csproj.user-在其中,请确保UseIISExpress设置为false

<UseIISExpress>false</UseIISExpress>


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

YourProjectName.csproj-在主项目文件中,确保 UseIISUseIISExpress都设置为false

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


更改这些内容后,我可以再次加载项目。

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


1

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

  • 从IIS删除站点
  • 创建新站点,为其命名为“ new_site”
  • 选择站点名称本身以外的应用程序池。因此,它不会弄乱默认设置。
  • 如果从同一台计算机运行IP,请保持IP“未分配”
  • 给它一些未使用的端口
  • 右键单击VS可执行快捷方式,以“以管理员身份运行”身份运行Visual Studio。
  • 大功告成!

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

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

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




1

我修复了Visual Studio 2015以解决此问题。修复花费了很长时间,但解决了问题,而上述大部分操作却没有完成。我正在运行Win 7企业版。


1

打开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并测试可解决问题的应用程序



0

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


0

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

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


0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.