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

时间:2011-05-24 04:42:48

标签: asp.net asp.net-4.0

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

尝试本地化问题我创建了一个只有'index.html'文件的简单网站。它在ASP.NET 2.0下工作正常,但当我将App Pool切换为使用4.0时 - 它停止工作。

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

  

服务不可用

     

HTTP错误503.该服务不可用。

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

  

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

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

P.S。我有VS2010,Windows Vista x64,安装了最后更新,还安装了VS SP1 ...

12 个答案:

答案 0 :(得分:49)

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

答案 1 :(得分:4)

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

P.S。

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

P.P.S。

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

答案 2 :(得分: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

的工具

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:2)

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

如果要在IIS管理器中创建新应用程序,默认情况下它将创建一个具有相同名称的新应用程序池。问题是此池在名为IIS APPPOOL\yourSiteName的新标识下运行(在“应用程序池”页面中,它通常列为ApplicationPoolIdentity)。

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

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

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

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

我唯一的问题是应用程序池,它显示了已停止的图标。 我将我的应用程序指向另一个AppPool,它又回来了。希望它有所帮助。

答案 8 :(得分:1)

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

答案 9 :(得分:0)

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

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

答案 10 :(得分:-1)

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

答案 11 :(得分:-3)

执行aspnet-iisreg -i,它将解决您的错误。