IIS 5上的ASP.NET 2.0应用程序导致错误(aspnet_wp.exe(PID:XXXX)意外停止。)

时间:2008-10-24 13:11:49

标签: .net asp.net .net-2.0 asp.net-2.0 iis-5

在Windows 2000服务器(IIS 5)上托管ASP.NET 2.0 Web应用程序之后。 我无法浏览网站。

浏览器上显示以下错误消息,并添加了三个事件日志条目...

浏览器

错误消息

  

服务器应用程序不可用您尝试在此Web服务器上访问的Web应用程序当前不可用。请点击网络浏览器中的“刷新”按钮重试您的请求。

事件日志条目

  

事件类型:错误
  事件来源:ASP.NET 2.0.50727.0
  活动类别:无
  事件编号:1000
  日期:2008年10月24日
  时间:下午3:45:26
  用户:N / A
  电脑:XXXXX
  说明:aspnet_wp.exe(PID:XXXX)意外停止。

     

事件类型:错误
  事件来源:ASP.NET 2.0.50727.0
  活动类别:无
  事件ID:1088
  日期:2008年10月24日
  时间:下午3:45:26
  用户:N / A
  电脑:XXXXX
  描述:无法执行请求,因为无法创建App-Domain。错误:0x80070005访问被拒绝。

     

事件类型:警告
  事件来源:ASP.NET 2.0.50727.0
  活动类别:无
  事件编号:1073
  日期:2008年10月24日
  时间:下午3:45:26
  用户:N / A
  电脑:WEBDEV
  说明:无法初始化AppDomain:/ LM / W3SVC / 1 / Root / WebApplicationName
  例外:System.IO.FileLoadException
  消息:无法加载文件或程序集'System.Web,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。访问被拒绝。   StackTrace:在System.Reflection.Assembly.nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,Assembly locationHint,StackCrawlMark& stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection)
     在System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,Evidence assemblySecurity,StackCrawlMark& stackMark,Boolean forIntrospection)
     在System.Reflection.Assembly.InternalLoad(String assemblyString,Evidence assemblySecurity,StackCrawlMark& stackMark,Boolean forIntrospection)
     在System.Activator.CreateInstance(String assemblyName,String typeName,Boolean ignoreCase,BindingFlags bindingAttr,Binder binder,Object [] args,CultureInfo culture,Object [] activationAttributes,Evidence securityInfo,StackCrawlMark& stackMark)
     在System.Activator.CreateInstance(String assemblyName,String typeName)
     在System.AppDomain.CreateInstance(String assemblyName,String typeName)
     在System.AppDomain.CreateInstance(String assemblyName,String typeName)
     在System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(String appId,IApplicationHost appHost,HostingEnvironmentParameters hostingParameters)
     在System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(String appId,IApplicationHost appHost,HostingEnvironmentParameters hostingParameters)

任何想法......

**编辑**

为什么抛出System.IO.FileLoadException来访问System.Web程序集?

4 个答案:

答案 0 :(得分:3)

我发现当网站文件夹被复制到服务器时,它继承了父文件夹的安全权限,该文件夹只有管理员,管理员和管理员的权限。系统帐户。

我添加了

  • IUSER_MACHINENAME(互联网访客帐户)
  • ASPNET(ASP.NET机器帐户)

阅读&执行列出文件夹内容读取权限。

即使问题已解决,我仍然有一些问题

从第三个事件日志条目中可以清楚地看出,ApplicationManager无法创建System.Web程序集中的HostingEnvironment。

由于System.Web抛出了FileLoadException,因此ASP.NET工作进程似乎无法访问GAC文件夹。

为什么抛出FileLoadException来访问System.Web?

答案 1 :(得分:1)

从外观上看,您的ASP.NET安装权限设置不正确。通常最好的办法就是卸载并重新安装ASP.NET部分。您可以通过以下方式轻松完成此操作。

  1. 打开命令提示符到C:\ windows \ microsoft.net \ framework \ v2.0.50727
  2. 运行以下命令:aspnet_regiis.exe -u
  3. 运行以下命令:aspnet_regiis.exe -i
  4. 这将卸载ASP.NET并重新安装,然后应该为该帐户建立适当的权限。

答案 2 :(得分:0)

此错误表示您的代码抛出了一个异常,该异常导致IIS崩溃或强制关闭。导致这种情况的常见异常是OutOfMemoryException和StackOverflowException。

您正在获取FileLoadException,但可能存在潜在的OutOfMemoryException或类似的实际上是其根本原因。如果不知道你要加载什么,以及里面的代码,就不可能知道究竟是什么导致了你的问题。

我要做的第一件事是排除装载程序集的问题,就是尝试在测试工具中反映出来并查看是否发生了同样的问题。如果是这样,那么问题在于您尝试加载的DLL,而不是IIS。

答案 3 :(得分:0)

我遇到了同样的问题,并没有使用带-u和-i的aspnet_regiis,而其他许多人建议使用here。 但在我清理了“%windir%\ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files”文件夹并将此文件夹的读写权限从web.config中的identity impersonate部分赋予用户后,问题就消失了。仅为本地ASPNET用户提供这些权利是不够的。