ASP.NET 无法访问 IIS 元数据库

Posted

技术标签:

【中文标题】ASP.NET 无法访问 IIS 元数据库【英文标题】:ASP.NET has no access to IIS metabase 【发布时间】:2010-11-15 17:31:18 【问题描述】:

如何解决这个问题?

我正在使用 asp.net 2.0、vs2005 和 IIS 5.1。

使用 Windows XP SP3。

Failed to access IIS metabase.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.Hosting.HostingEnvironmentException: Failed to access IIS metabase.

The process account used to run ASP.NET must have read access to the IIS metabase (e.g. IIS://servername/W3SVC). For information on modifying metabase permissions, please see http://support.microsoft.com/?kbid=267904.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[HostingEnvironmentException: Failed to access IIS metabase.]
   System.Web.Configuration.MetabaseServerConfig.MapPathCaching(String siteID, VirtualPath path) +3591442
   System.Web.Configuration.MetabaseServerConfig.System.Web.Configuration.IConfigMapPath2.MapPath(String siteID, VirtualPath vpath) +9
   System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath virtualPath, Boolean permitNull) +169
   System.Web.CachedPathData.GetConfigPathData(String configPath) +389
   System.Web.CachedPathData.GetConfigPathData(String configPath) +243
   System.Web.CachedPathData.GetApplicationPathData() +68
   System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp) +3536567
   System.Web.Configuration.RuntimeConfig.GetLKGRuntimeConfig(VirtualPath path) +189

【问题讨论】:

您是否尝试过 IIS 为您提供的建议解决方案 - support.microsoft.com/?kbid=267904? 【参考方案1】:

只需从 cmd 运行以下命令

%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

【讨论】:

【参考方案2】:

ASPNET 用户的权限设置不正确。

您运行的是什么版本的 ASP.NET?

试试

Start -> Run 
Type cmd <HIT RETURN>
Type c:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i <HIT RETURN>

或按照建议

aspnet_regiis.exe -ga ASPNET

【讨论】:

谢谢...你拯救了我的一天。 :) @DD59 - aspnet_regiis.exe -ga ASPNET 运行良好。非常感谢:)【参考方案3】:

使用 -i 选项运行 asnet_regiis 可能不够,原因可能是 ASPNET 帐户缺乏适当的 IIS 元数据库访问权限。

我建议使用 -ga 选项运行它:

aspnet_regiis.exe -ga ASPNET

一般来说,如果在安装 IIS 之前安装 Visual Studio 和/或 .Net Framework,则会出现此问题。

【讨论】:

试过 -i 没用,但 -ga ASPNET 成功了。谢谢。 谢谢...你拯救了我的一天。 :) 谢谢你——这就是问题所在!【参考方案4】:

尝试从 dotnet 目录运行 aspnet_regiis -i。它有解决问题的方法。

【讨论】:

我过去曾遇到过类似问题的解决方案。

以上是关于ASP.NET 无法访问 IIS 元数据库的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 无法访问 IIS 元数据库

DLL 无法访问 IIS 内部用于 ASP.NET 应用程序的数据库

VS 2017 无法访问 IIS 元数据库

无法访问 IIS 元数据库。您没有足够的权限访问您计算机上的 IIS 网站。视觉工作室 2015

无法访问 IIS 元数据库。您没有足够的权限访问计算机上的 IIS 网站

解决ASP.NET Core部署到IIS,更新项目"另一个程序正在使用此文件,进程无法访问"