asp.net-mvc - VS 2015、C# 6、MVC5、Roslyn — Azure Web 应用程序上出现 502 网关错误

标签 asp.net-mvc azure visual-studio-2015 azure-web-app-service roslyn

我正在诊断这个问题,我会随着了解更多信息进行更新,但我想发布我所拥有的内容,以防有快速修复/有人已经看到了这个问题。

我有一个 MVC5 项目、.NET 4.5.2、Visual Studio 2015。我最近开始使用 C# 6,因此为了让 Razor 工作,我必须安装 CodeDOM 编译器 Nuget 包。一切都在我的本地计算机上运行(当然可以)。

我当前的稳定 Azure 站点位于 Git 提交上,该提交不使用 C# 6,而是使用 .NET 4.5.2 和 VS 2015。因此,我最新的提交和稳定提交之间的唯一重大区别是 C# 的引入6 和罗斯林。

当我将新提交部署到 Azure 时,在旋转长达 2 分钟后,我始终会收到 502 网关错误。对于不返回 View 而是内容操作结果的 MVC 操作,它最终会返回内容,尽管速度相当慢。当我转到 Kudu 并查看进程时,我可以看到 Roslyn 编译器正在运行,并且昨晚我注意到 w3wp 进程会经常重新启动,通常是在我收到 502 请求之后。

如果我重新部署之前的提交,它就可以正常工作。

我的下一步确实是使用 C# 6 和 MVC 5 将问题隔离到一个空白的 Web 应用程序,看看这是否是根本原因 - 但我有根据的猜测是 Roslyn 编译器的引入正在把事情弄乱 azure 。

大家有什么想法吗?当我了解更多信息时,我会更新此内容,但我今天和周末都很忙。

最佳答案

我花了一整天的时间才慢慢地但确实地弄清楚了这一点。我部署了自上次稳定提交以来的每个提交,并找到了引入问题的提交。在提交中我引入了更多 TypeScript 文件。事实证明,这些文件没有在 Kudu/Azure 中编译,因此 JS 文件丢失,导致我的捆绑/缩小框架(Cassette)尝试解析引用 - 但它从未解决并导致 StackOverflow 或循环问题(单独的错误)导致我的 w3wp 进程崩溃。这就是为什么几乎不可能调试,也是为什么我的非 Razor 操作返回的原因——它们没有渲染包,所以它没有调用 Cassette。

我将生成的 JS 文件包含在项目中并解决了问题。我想我只需编辑我的 Kudu 部署脚本并在 tsconfig.json 文件上手动调用 tsc,以便它在构建时正确编译。

关于asp.net-mvc - VS 2015、C# 6、MVC5、Roslyn — Azure Web 应用程序上出现 502 网关错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34092016/

相关文章:

asp.net-core - ASP.NET 5 的 Web 服务器,无需调试即可工作

c# - asp.net 4.5 MVC SQL 选择喜欢

c# - 使用/单元测试表单验证 Restful 网络服务

c# - 如何在 MVC SimpleMembership 中锁定/解锁用户

c# - ASP.NET MVC 通用存储库

azure - 单一消费计划中的多个功能应用程序?

azure - 应用服务上的内部负载均衡器在配置了 NAT 网关后是否仍执行 SNAT?

azure - azure yaml 构建管道的摘要选项卡上显示不正确的代码覆盖率百分比

nuget - 如何从 Visual Studio 2015 中的自定义包源更新 NuGet 包?

c++ - 图标编辑器中的自定义颜色 (VS 2015)