【发布时间】:2015-03-09 02:15:05
【问题描述】:
我使用 Visual Studio 构建了一个 .net Web 应用程序。我在visual studio中对其进行了测试,它似乎工作正常。在本地发布并复制到我的远程 Web 服务器后,它似乎一直在使应用程序池崩溃,我不知道如何调试它。
我如何发布它: 我在本地发布它并将所有文件复制到:远程服务器上的 wwwroot/ss/。之后,我将该文件夹作为应用程序安装在 IIS 中。因为它是使用 .net 4.5 框架构建的,但我只有 .net 4.0 应用程序池:
appcmd 设置 apppool /apppool.name: api /managedRuntimeVersion:4.5
现在,每当我使用我的 url:mywebsite.com/ss/api/controller/param 访问应用程序时,我都会收到 503 服务不可用。
当我转到该 URL 后检查应用程序池时,应用程序池已关闭。我尝试使用 try/catch,但似乎没有帮助。我在日志文件中看到的只是:
2015-03-09 01:01:39 remoteIP 14132 siteIP 80 HTTP/1.1 GET /ss/api/controller/param 503 4 AppOffline api
调试此问题的最佳方法是什么?我可以使用远程调试器吗?除了站点根目录中的 C:\Windows\System32\LogFiles\HTTPERR 或 logs/LogFiles 文件夹之外,是否还有其他文件夹可以找到有关崩溃原因的更多信息?
编辑: 如果它完全有用,我会在事件日志中看到:
我看到几个警告: 为应用程序池“api”提供服务的进程意外终止。进程 ID 为“2724”。进程退出代码是“0xffffffffe”。
接着是: 由于为该应用程序池提供服务的进程中出现一系列故障,应用程序池“api”将被自动禁用。
【问题讨论】:
-
如果您真的怀疑应用程序池崩溃的问题,我会考虑在服务器上安装 DebugDiag (microsoft.com/en-ca/download/details.aspx?id=40336) 并将其设置为从 w3wp.exe 捕获异常。
-
您可以在服务器内本地浏览 Web API 吗?请确保 IIS 在 64 位机器上运行。
-
发布时,预编译复选框是勾选还是不勾选?
-
还要查看事件日志以获取更多信息。有时这会有所帮助。
-
@womp 我安装了 DebugDiag -- 当我将它附加到我的池并且池关闭时,我没有看到任何消息。这是否意味着这不是崩溃,而是导致池停止的其他行为?
标签: c# asp.net asp.net-web-api asp.net-web-api2