【问题标题】:Debugging .Net web api调试.Net web api
【发布时间】: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


【解决方案1】:

没有 .net 4.5 运行时这样的东西。将其设置回 .net 4.0

appcmd set apppool /apppool.name: api /managedRuntimeVersion:4.0

有趣的事实。

截至 2015 年 3 月 9 日,只有 3 个 .net 运行时

  • .net 运行时 1.0
  • .net 运行时 2.0
  • .net 运行时 4.0

这些运行时允许您运行以下(忽略各种 SP)

  • .net 运行时 1.0
    • .net 框架 1.0
  • .net 运行时 2.0
    • .net 框架 2.0
    • .net 框架 3.0
    • .net 框架 3.5
  • .net 运行时 4.0
    • .net 框架 4.0
    • .net 框架 4.5
    • .net 框架 4.5.1
    • .net 框架 4.5.2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多