最近用WCF做REST服务开发是,发现把程序部署在IIS上以后,客户端访问服务,时不时就出现请求失败,然后在IIS里直接浏览服务的svc文件,就报错了:
访问 IIS 元数据库时发生错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Runtime.InteropServices.COMException: 访问 IIS 元数据库时发生错误。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 |
堆栈跟踪:
[COMException (0x80070005): 访问 IIS 元数据库时发生错误。]
System.ServiceModel.Activation.MetabaseReader..ctor() +11453328
System.ServiceModel.Activation.MetabaseSettingsIis6.CreateTransportSettings(String relativeVirtualPath) +75
System.ServiceModel.Activation.MetabaseSettingsIis.GetTransportSettings(String virtualPath) +151
System.ServiceModel.Activation.MetabaseSettingsIis.GetAccessSslFlags(String virtualPath) +4
System.ServiceModel.Activation.MetabaseSettings.GetAllowSslOnly(String virtualPath) +7
System.ServiceModel.Activation.HttpHostedTransportConfiguration.GetBaseAddresses(String virtualPath) +87
System.ServiceModel.Activation.HostedTransportConfigurationManager.InternalGetBaseAddresses(String virtualPath) +114
System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +130
System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +42
System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +479
[ServiceActivationException: 由于编译过程中出现异常,无法激活服务“/Services/GISStatisticService.svc”。异常消息为: 访问 IIS 元数据库时发生错误。。]
System.ServiceModel.AsyncResult.End(IAsyncResult result) +11528042
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +194
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +176
System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +278
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
|
版本信息: Microsoft .NET Framework 版本:2.0.50727.3603; ASP.NET 版本:2.0.50727.3053
-----------------------------------------------------------------------------------------------------------------
在网上百度、Google了下,基本都说可能是装了VS.NET再装IIS的问题,于是按照网上给的方法试了下,然后重启了下IIS,就没再报错(到目前为止)。
解决方法:
1、先关闭你的VS.NET。
2、“开始”-“运行”,输入cmd,输入 cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 ,回车。
3、然后输入 aspnet_regiis.exe -i
稍等片刻,注册成功就解决问题了
4、打开 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 找到你刚才调试的程序的名字的目录删除它。
5、关闭IIS服务器,重开一次。
4、用IE浏览一下你的程序,问题解决。