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

时间:2012-10-12 13:15:03

标签: c# .net iis

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

  

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

我为每个Web应用程序都提供了这个。我尝试过的事情:

  1. 以管理员身份运行Visual Studio
  2. 运行aspnet_regiis.exe -ga MyUserName
  3. 运行aspnet_regiis.exe -i
  4. 这些似乎是这个问题的常见解决方案,但我没有取得任何成功。还有什么我可以尝试做的吗?

37 个答案:

答案 0 :(得分:1420)

Windows 8 Pro

%systemroot%\inetsrv\config

Windows 7和8.1和10

%systemroot%\System32\inetsrv\config 

%systemroot%通常为C:\Windows

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

  

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

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

答案 1 :(得分:244)

我认为您没有使用管理员权限运行visual studio。看看:

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

引用

  

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

答案 2 :(得分:49)

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

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

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

答案 3 :(得分:33)

我通过向%systemroot%\inetsrv\config

授予IIS AppPool身份权限来解决此问题

答案 4 :(得分:27)

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

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

并将USEIIS设置为false

<UseIIS>False</UseIIS>

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

答案 5 :(得分: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)选择将内容放入Documents或My Document目录中,并结合非常糟糕的错误消息。在上述两种情况中,根本问题是IISExpress Config file在我的文档中,并且它不存在或无法访问。

答案 6 :(得分:12)

我有这个问题 - 症状是一样的,但我遇到的问题是我已经设置了&#34;我的文件&#34;要在网络共享上的文件夹,并且无法访问该共享。

根本问题是无法访问位于%USERPROFILE%\ Documents的IIS配置文件。一旦我改变了我的文件&#34;文件夹位置(我修改了reg值),它又开始工作了。

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

答案 7 :(得分:12)

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

我的解决方案

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

答案 8 :(得分:12)

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

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

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

感谢:IIS7 Permissions Overview - ApplicationPoolIdentity

答案 9 :(得分:10)

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

答案 10 :(得分:7)

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

  1. 我尝试了所有正在运行的管理员
  2. 所有IIS / IIS快速重新安装。
  3. 各种“hacks”
  4. 决定再次修复注册表。

    1. 无法以管理员身份打开注册表(由于问题不在于gpedit.msc管理模板,因此需要访问注册表)

    2. 桌面上的UnHookExec.inf

    3. 只需保存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
      2. (从<script type="text/javascript"> function configModal() { $(".clickable-row").click(function() { var row = $(this) var modal = $('#notificationModal'); var title = row.find('td').find('a').html(); var html = row.find('.notification-content').html(); var notificationId = row.attr('id'); modal.find('.modal-body').html( html ); modal.find('.modal-title').html( title ); modal.find('#modal-form').find('input[name=id]').attr('value', notificationId) modal.find('#modal-form').find('input[name=isDeleted]').attr('checked', row.hasClass('deleted')); modal.modal(); $.post("${createLink(controller: 'notification', action: 'update')}", { id : notificationId, isRead : true }, function() { row.addClass('read'); }); }); } $(document).ready(configModal); </script> 更改为\\cs2data\home\stickelt\my documents

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

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

答案 11 :(得分:7)

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

  1. 右键单击项目
  2. 点击修改
  3. 删除以下行:

     <IISUrl>http://localhost:xxxxx </IISUrl>
    
  4. 重新加载项目

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

答案 12 :(得分:6)

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

答案 13 :(得分:4)

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

答案 14 :(得分:3)

更改此密钥对我有用:

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

该位置不存在。

答案 15 :(得分:3)

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

<UseIIS>True</UseIIS>
首先

到'假'。

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

答案 16 :(得分:2)

你还可以尝试一下:

  • 检查您是否有待更新的Windows更新。
  • 如果你这样做,请在尝试其他任何事情之前重启。

我倾向于永远不会关闭我的机器,因此我有很多人在等待重启。并修复了它。

答案 17 :(得分:2)

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

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

答案 18 :(得分:2)

我尝试了以上所有方法。归功于上述所有回复。在我们自己尝试了所有建议之后,我只是按照对我有意义的顺序汇总了这些建议组合。请注意我的Documents文件夹位于共享驱动器上。除非您在同一条船上,否则不能使用subst / IISExpress。

  • 配置VS以管理员身份运行
  • 通过“添加/删除程序”,“Windows功能”
  • 卸载IIS
  • 重新启动
  • 运行WinRAR或类似管理员和存档C:\windows\system32\inetsrv\
  • 以管理员身份运行cmd和rmdir /s c:\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文件夹。
  • 使用CustomUserHome
  • HKCU\Software\Microsoft\IISExpress中创建了C:\Temp\Documents\IISExpress个密钥
  • 这使我可以让Visual Studio打开我的Web项目并编辑属性。我调整了项目以将Web服务器设置存储在用户文件中,并将其调整为使用自定义URL(不确定是否有必要)
  • 每次重新启动时,我可能/可能不必运行subst命令。别在意。

在丢了3次并花费大约6个小时后,我可以在Visual Studio(2015 Update 2)中打开Web项目。

答案 19 :(得分:2)

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

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

<UseIISExpress>false</UseIISExpress>


如果单独不起作用,请尝试以下操作并再试一次:

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

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


更改后,我可以再次加载项目。

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

答案 20 :(得分:2)

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

我正在运行VS2012,几乎每次我都必须执行右键单击,以管理员身份运行。我厌倦了这一点,所以我进入了快捷方式的属性,单击高级,然后单击“以管理员身份运行”选项。现在,当我从该快捷方式打开时,VS2012始终以管理员身份运行。

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

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

其他建议看起来有点极端,但这很简单,所以我倾向于先尝试一下。

希望这有用。

答案 21 :(得分:1)

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

答案 22 :(得分:1)

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

答案 23 :(得分: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并测试解决问题的应用程序

答案 24 :(得分:1)

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

答案 25 :(得分:1)

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

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

除了我所说的以外,你不需要关闭/重新安装任何其他东西。

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

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

答案 26 :(得分:0)

在我的情况下,只有帮助我的是重新安装(或修复更容易)IIS 10.0 Express

答案 27 :(得分:0)

运行命令:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ga %username%
c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

答案 28 :(得分:0)

IIS Express用户-在网络共享上使用我的文档

如果IIS Express application.config位于网络驱动器上,请确保该驱动器已映射并连接到“我的电脑”中。

我遇到了这个问题,当我在“我的电脑”中重新映射网络驱动器时,问题已解决。

答案 29 :(得分:0)

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

<UseIIS>False</UseIIS>

答案 30 :(得分:0)

我在Windows 10 Professional 64位计算机上遇到过这种情况,这里发布的其他答案都没有帮助。它在我经历了蓝屏死机后开始发生,我发现UAC已经重新开启了。仅作为管理员运行Visual Studio不是解决方案,因为我的源控件位于网络驱动器上,Visual Studio无法使用UAC访问该驱动器。

通过GPEDIT关闭UAC解决了问题。

答案 31 :(得分:0)

我遇到了同样的问题。对我而言,我使用的文档与以前的Windows安装文件相同。只需从我的文档中删除IISExpress文件夹就可以了。

答案 32 :(得分:0)

您可以通过实际取消选中Windows功能列表中的IIS工具来解决此问题。然后,修复Visual Studio 2013安装并确保选中Web Developer。它将安装IIS 8,VS可以很好地工作。

答案 33 :(得分:0)

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

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

答案 34 :(得分:0)

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

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

答案 35 :(得分:0)

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

答案 36 :(得分:-1)

创建一个新的网站,在错误转到你创建项目的文件夹后,在txt应用程序中打开.csproj文件,找到这个标签&#34; <UseIIS>&#34;并改变&#34; false&#34; to&#34; true&#34;,在下面的行中找到标签&#34; <IISUrl>&#34;然后把iis url(在iis中找到url),你的标签必须是这样的:

<WebProjectProperties>
      <UseIIS>True</UseIIS>
      <AutoAssignPort>True</AutoAssignPort>
      <DevelopmentServerPort>0</DevelopmentServerPort>
      <DevelopmentServerVPath>/</DevelopmentServerVPath>
      <IISUrl>http://localhost/yourIISAppAlias
      </IISUrl>
      <NTLMAuthentication>False</NTLMAuthentication>
      <UseCustomServer>False</UseCustomServer>
      <CustomServerUrl>
      </CustomServerUrl>
      <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
    </WebProjectProperties>