去年我一直在 Windows 10 PC 上使用 Visual Studio 进行开发。我在同一台计算机上安装了 ASP.NET Web 应用程序和 SQL Server 2014 数据库。
我在处理该网站时让它在 IIS 中运行:
我还有一个集成安全性的连接字符串:
<add name="WebsiteEntities" connectionString="metadata=res://*/websiteModel.csdl|res://*/websiteModel.ssdl|res://*/websiteModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=website;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
我使用常规 Windows 帐户连接到 SQL 数据库。网络上没有活动目录或域或任何东西:
昨天下午一切都开始变得糟糕起来。当我尝试在 IIS 上访问网站时,突然出现错误 503:
检查 IIS 中的应用程序池,我注意到它尚未启动:
每当我访问连接到此应用程序池的任何 Web 应用程序时,该池就会立即崩溃(我说崩溃,但它只是停止运行)。
我确保它正在运行:
然后访问该网站时出现 503 错误,并且应用程序池已停止。
在过去的几个小时里,我尝试过的所有方法都无法使应用程序池继续运行。在 Visual Studio 中,应用程序中没有任何可调试的内容,因为它从未在那里启动过。崩溃不会在 inetpub 中生成任何日志。我尝试更改我的 Windows 帐户密码并在应用程序池中更新它,但我仍然遇到同样的问题。
我如何才能有效地调试应用程序池以找出它不断崩溃的原因?
答案1
调试步骤
重启计算机如果您还没有,以防万一有待处理的更新,碎片内存等,只需排除简单的电源循环即可消除常见问题。
检查事件查看器两者的日志应用和系统日志中查找与该问题相关的任何内容,看看其中是否有内容可以表明问题可能是什么。
启用调试日志记录在配置文件中的屏幕上,重新启动应用程序池,然后再次尝试查看它是否在应用程序池停止之前在屏幕上显示任何内容。
打开更高级或详细的 IIS 日志记录看看是否显示任何相关内容。
将顶部/主站点设置为 .NET 4.0 或更高版本的 .NET,然后将下面的站点/应用程序明确设置为 2.0 或更低版本的框架.NET Framework 版本越高,隐式地降低版本可能会导致类似这样的问题
- 如果此 Web 应用在“主/默认“IIS 站点(类似于分层 IIS 结构中的子文件夹)查看顶级或主站点设置为使用 .NET 版本。如果顶级设置为 2.0 或低于此应用程序使用的 .NET Framework 的版本,则可能会导致应用程序池崩溃。
创建新的应用程序池使用适用的设置,然后设置应用程序来使用它,看看是否有什么区别。
运行Wireshark或 TCP/IP 嗅探机器上的等效性,看看是否有任何相关的数据包表明问题可能是什么。