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

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

浏览器上的错误消息

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

事件日志条目

事件类型:错误
事件来源:ASP.NET 2.0.50727.0
活动类别:没有任何
事件编号:1000
日期:2008年10月24日
时间:下午 3:45:26
用户:不适用
电脑:XXXXXX
描述:aspnet_wp.exe(PID:XXXX)意外地停了下来。

事件类型:错误
事件来源:ASP.NET 2.0.50727.0
活动类别:没有任何
事件编号:1088
日期:2008年10月24日
时间:下午 3:45:26
用户:不适用
电脑:XXXXXX
描述:无法执行请求,因为无法创建应用程序域。错误:0x80070005 访问被拒绝。

事件类型:警告
事件来源:ASP.NET 2.0.50727.0
活动类别:没有任何
事件编号:1073
日期:2008年10月24日
时间:下午 3:45:26
用户:不适用
电脑:网络开发工具
描述:无法初始化应用程序域:/LM/W3SVC/1/Root/WebApplicationName
例外:系统.IO.FileLoadException
信息:无法加载文件或程序集“System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。访问被拒绝。堆栈跟踪:在 System.Reflection.Assembly.nLoad(AssemblyName fileName、字符串 codeBase、证据 assemblySecurity、程序集位置Hint、StackCrawlMark& stackMark、布尔值 throwOnFileNotFound、布尔值 forIntrospection)
在 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef、证据 assemblySecurity、StackCrawlMark& stackMark、布尔值 forIntrospection)
在 System.Reflection.Assembly.InternalLoad(字符串 assemblyString,证据 assemblySecurity,StackCrawlMark& stackMark,布尔值 forIntrospection)
在System.Activator.CreateInstance(字符串程序集名称,字符串类型名称,布尔忽略大小写,BindingFlags绑定Attr,活页夹活页夹,对象[]参数,CultureInfo文化,对象[]激活属性,证据安全信息,StackCrawlMark&stackMark)
在 System.Activator.CreateInstance(字符串程序集名称,字符串类型名称)
在 System.AppDomain.CreateInstance(字符串程序集名称,字符串类型名称)
在 System.AppDomain.CreateInstance(字符串程序集名称,字符串类型名称)
在 System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(字符串 appId,IApplicationHost appHost,HostingEnvironmentParameters 托管参数)
在 System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(字符串 appId,IApplicationHost appHost,HostingEnvironmentParameters 托管参数)

有任何想法吗...

** 编辑 **

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

有帮助吗?

解决方案

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

我添加了

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

读取并执行, 列出文件夹内容 权限。

虽然问题解决了我还是有一些疑问

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

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

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

其他提示

从外观上看,您的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并重新安装,然后应该为该帐户建立适当的权限。

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top