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 上不可用