HTTP 错误 503。该服务在简单的 ASP.NET 4.0 网站下不可用

Posted

技术标签:

【中文标题】HTTP 错误 503。该服务在简单的 ASP.NET 4.0 网站下不可用【英文标题】:HTTP Error 503. The service is unavailable under simple ASP.NET 4.0 web site 【发布时间】:2011-05-24 04:42:47 【问题描述】:

在我的本地笔记本电脑上发生了一些奇怪的事情:我在本地工作了很长时间的网站没有启动...

尝试本地化问题我创建了一个仅包含“index.html”文件的简单网站。它在 ASP.NET 2.0 下运行良好,但是当我将 App Pool 切换为使用 4.0 时 - 它停止工作。

当我在浏览器中打开网站时,它显示以下错误:

服务不可用

HTTP 错误 503。服务不可用。

并导致应用程序池也停止工作......在“应用程序”部分的系统事件日志中,我有:

工作进程未能正确初始化,因此无法启动。数据就是错误。

请指教。在 Google 中找不到任何相关内容... :(

附:我有VS2010,Windows Vista x64,最后安装了更新,VS SP1也安装了...

【问题讨论】:

您能否提供错误的事件日志信息? 好像是配置问题! 好提示(应该自己做)。工作进程未能正确初始化,因此无法启动。数据就是错误。 配置?你的意思是web.config?但它不存在:我在网站上试过一个 index.html 文件......如果你的意思是别的 - 请告知。我在配置方面不是太强。提前非常感谢 我的意思是 .NET 配置。 ApplicationPool(s) 及其配置似乎有问题!当我尝试在 Windows 7 x64 上安装 .NET FW v1.1 时,我遇到了类似的问题。应用程序池拒绝启动。因此,我必须修复 .NET FW 4.0 并将所有内容重置为库存以使一切恢复正常。 【参考方案1】:

我必须启动为我的网站设置的应用程序池,并在某些错误时自动停止。 (IIS (7.5 in my case)->Application Pools->Start stopped application pool.)

【讨论】:

这真的很有帮助。我想知道具体错误(如果有的话)实际记录在哪里,例如'应用程序池不可用' 谢谢先生,这真的很有帮助! :D 如果应用程序池启动并立即停止,您的应用程序池也可能有一个过期的帐户密码。打开应用程序池属性并重新输入身份。 谢谢!在我的情况下,我在主网站内还有一个应用程序文件夹,它正在使用一个已停止的特定应用程序池!所以我只看主网站 app.pool...直到现在!!太好了!【参考方案2】:

我已经重新安装了 .NET 64 - 这很有帮助。

附言

似乎“C:/windows/Microsoft.net/Framework64/v4.0.30319/”文件夹中的某些文件或者我自己删除了它们(VS有时会抱怨“ASP.NET临时文件”中的文件及其删除帮助)...可能我没有注意那些文件夹不是临时的...

附言

在这种情况下,为什么VS抱怨“C:/windows/Microsoft.net/Framework64/v4.0.30319/”文件夹中的文件......好吧,现在很难说。

【讨论】:

检查,从FW 4.0文件夹重新安装/修复后可能需要重新运行aspnet_regiis 我尝试在重新安装 .NET 4.0 之前重新运行 aspnet_regiis - 没有帮助 卸载 .NET 4.5.1 时出现这种情况,Framework64\v4.0.30319 几乎是空的。【参考方案3】:

听起来您忘记在 IIS 上启用 .Net 4 扩展。尝试在 ISAPI 和 CGI​​ 限制中查找并启用它

http://blogs.msdn.com/b/rakkimk/archive/2007/08/17/iis7-where-is-the-web-services-extensions-option-which-was-there-in-iis6.aspx

根据评论,可能是框架的一部分已被删除,在这种情况下,通过首先清理它来重新安装框架 4 可能是明智之举。试试这篇博文,它引用了一个自动清理进程的工具http://blogs.msdn.com/b/astebner/archive/2008/08/28/8904493.aspx

【讨论】:

那个网站工作了几年......今天失败了......我记得VS抱怨说,“C:/windows/Microsoft.net/Framework64/v4.0.30319/”中有问题文件夹(它经常抱怨“ASP.NET 临时文件”子文件夹中的文件)......现在我在想,可能我从那个文件夹中删除了一些东西......? 我想你可以尝试重新安装 .net 4 实际做到了:) 有帮助 没有清理,.NET 4.0 重新安装有帮助。看我自己的答案。感谢您的帮助!【参考方案4】:

在应用程序启动方面,ASP.NET 2.0 和 4.0 之间存在细微的变化。例如,您可能无法在 ASP.NET 4.0 中的 Application_Start 事件期间访问 HttpContext 对象。您是否有任何代码可能隐藏因此引发的异常?

有一些问题可能会导致 AppPool 停止。我自己遇到的一个问题是,除了请求工作线程之外的线程上的任何未处理的异常都会导致 AppPool 最终停止。这不是一个直接的问题,但最终它会停止。 ASP.NET 运行时会跟踪您的应用程序失败的频率,如果它违反了该阈值,则 AppPool 将停止,并随之关闭任何共享该池的应用程序。 ***Exception 或 OutOfMemoryException 最终会产生相同的效果,这些是严重错误,不应在您的日常生产代码中发生。

我会查看 ASP.NET 2.0 和 4.0 之间的更改并查找未处理的异常。您还可以更改 Visual Studio 处理异常的方式(在“调试”>“异常”下检查)并在它们被抛出时中断,无论它们是否被处理,这是一种快速但非常冗长的查找任何异常的方法。

【讨论】:

根据日志 AppPool 由于连续 5 个错误而停止...“由于为该应用程序池提供服务的进程中的一系列故障,应用程序池“测试”正在自动禁用。 " 正如我在原始帖子中所说的,我尝试使用简单的 index.html 文件进行测试(里面没有代码,只有最简单的 HTML):带有此文件的网站在 .NET 2.0 下工作,但之后失败切换到 4.0... :( 好的,进入 Visual Studio,在主菜单中输入 Debug > Exceptions 单击“Common Language Runtime Exceptions”条目旁边的“Thrown”复选框。立即运行您的应用程序。 Visual Studio 应该在第一眼看到任何异常时中断。如果您需要超越您的代码,您还可以从 Visual Studio 的调试器设置中禁用“仅我的代码”。这将允许您发现任何异常,无论它是从哪里抛出的。 您是否尝试过使用单个 index.html 文件创建一个空白的 ASP.NET 4.0 项目? 是的!这就是我想告诉大家的。【参考方案5】:

我建议检查用作站点根目录的文件夹的安全权限。工作进程的启动可能失败,因为它无法读取此文件夹中的web.config

如果您在 IIS 管理器中创建新应用程序,默认情况下它将创建一个同名的新应用程序池。问题是这个池在一个名为IIS APPPOOL\<i>yourSiteName</i> 的新身份下运行(在应用程序池页面中,这通常被列为ApplicationPoolIdentity)。

此标识在创建池之前不存在,因此该文件夹当前未授予读取访问权限,然后工作进程因无访问权限而失败。

如果您希望使用此身份,您可以使用站点上下文菜单上的 Edit Permissions 项目并访问“安全”选项卡,直接通过资源管理器编辑文件夹的 Security 项目,或使用命令中的 icacls.exe 等工具行(推荐用于可重复性)。

您还可以将池的身份更改为Network Service 或特定用户。我强烈反对使用Local System,因为它授予太多权限,而Local Service 有其他限制。

注意:如果您要在“安全”对话框中添加ApplicationPoolIdentity,如果您使用“高级/查找”选项,则不会出现IIS APPPOOL 帐户。您必须手动输入整个“IIS APPPOOL\<i>yourSiteName</i>”字符串,然后单击 Check Names 按钮进行验证 - 如果有效,对话框将用带下划线的 yourAppName 替换您的文本。

【讨论】:

【参考方案6】:

转到 IIS 并将应用程序池更改为您的 Web 应用程序的 DefaultAppPool

【讨论】:

【参考方案7】:

我必须更新我的网络凭据,并且没有更新 IIS 下应用程序的“PhysicalPathCredential”。解决了。​​

【讨论】:

【参考方案8】:

我唯一的问题是应用程序池,它显示了停止的图标。 我将我的应用程序指向另一个 AppPool,它又恢复了工作。希望对您有所帮助。

【讨论】:

【参考方案9】:

我认为在这种情况下,如果您访问 IIS 下的应用程序池。查找运行网站的应用程序池。我确定它已停止,所以只需重新启动它,你就可以开始了..

【讨论】:

【参考方案10】:

为这个问题苦苦挣扎了一段时间。该错误导致应用程序池失败。我会在 IIS 上重新启动应用程序池,但它会再次失败。

才发现问题是由不存在的Web.config appSettings 中指定的文件夹路径引起的。每次引用该文件夹时,都会发生错误。然后我创建了配置中指定的文件夹路径,错误停止发生。

【讨论】:

【参考方案11】:

这可能是由多种原因造成的。在我们的例子中,这是由于网站帐户设置造成的。 IIS 中网站属性的服务帐号密码配置错误。

【讨论】:

【参考方案12】:

aspnet-iisreg -i,它会解决你的错误。

【讨论】:

ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 用于向 Internet 信息服务 (IIS) 注册 ASP.NET 应用程序。) -i 安装与Aspnet_regiis.exe 并更新 IIS 元数据库根及以下的脚本映射。仅更新使用早期版本 ASP.NET 的应用程序的脚本映射。使用更高版本的应用程序不受影响。参考:msdn.microsoft.com/en-us/library/k6h9cz8h(VS.90).aspx 不管怎样,如果你在Windows Server 2012上,它就不再适用了

以上是关于HTTP 错误 503。该服务在简单的 ASP.NET 4.0 网站下不可用的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 错误 503 Windows 10 秋季更新后服务在 IIS 上不可用

网页503错误

Http错误503服务不可用

IIS HTTP 错误 503。服务不可用

HTTP 503 错误 – 服务不可用 (Service unavailable)

如何在 PHP 错误上设置 Apache HTTP 503 错误代码而不是 HTTP 500