MVC Web 应用程序和 API Web 应用程序可以在同一个池中运行吗?

疯狂先生

我正在开发一个 ASP.NET MVC web 应用程序 (C#),它是一个更大的应用程序模块(主要是基于桌面/win 服务的 - VB.NET)。目前,该应用程序对 Web 服务(作为 API 提供)进行 HTTP 调用,这是它自己的独立应用程序(也使用 MVC、VB.NET)。可能不是我会如何设计它,但它是我继承的。

我的问题是:如果我在本地 IIS 中托管 MVC 应用程序并在 IIS Express 中运行 API 项目,一切都很好。如果我将这两个项目拆分为在本地 IIS 中的单独应用程序池中运行,则一切正常。但是,如果我在 IIS 中的同一个池中运行这两个应用程序,则会遇到很多问题。即,当我调用HttpClient.GetAsync(url)时超时- 特别是在调用此 9 次以根据 ID 动态检索不同图像的页面上(每次调用 MVC 应用程序,然后调用 API )。有些电话通过了,大多数没有。

异常与取消的任务有关(超时 = 100 秒) - 但操作需要几分之一秒,因此无需超时。当它失败时,执行甚至从来没有进入 API 端的函数 - 就像 HTTP 客户端已经放弃提供任何更多的连接,或者任务正在等待 HTTP 发送请求而它从来没有。

我一直尝试将其设为异步,尝试将 HttpClient 设为静态等。但没有任何乐趣。这只是不应该做的事情 - 允许两个应用程序共享一个应用程序池吗?如果是这样,我可以忍受。但如果我能做些什么来更有效地处理它,那将非常有用。非常感谢有关此的任何信息/资源。塔!

内森·哈德利

我们最近遇到了同样的问题,花了很多时间调试才发现使用相同的应用程序池是问题的原因。

我还发现,如果您在应用程序池的高级设置中增加最大工作进程的数量,这可能会起作用。

我不确定为什么会这样,但我猜所有请求都由一个进程处理,这导致了积压,最终导致超时的请求太多。(虽然我很高兴有更了解 IIS 的人来纠正我)

HTH

编辑:在这里进一步阅读Carmelo Pulvirenti 的博客,似乎垃圾收集器可能是罪魁祸首。该博客指出,在同一个池上运行的多个应用程序共享内存,副作用是;

这意味着 GC 每秒运行大量时间,以便为您的应用程序提供干净的内存。副作用是什么?在服务器模式下,垃圾收集器需要停止所有线程活动来清理内存(这在 .NET Fx 4.5 上有所改进,其中的排序规则不需要停止所有线程)。副作用是什么?

  1. Web 应用程序的性能下降
  2. 由于 GC 的活动,对 CPU 时间的影响很大。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MVC .net Web API 和 MVC 应用程序在同一个项目中

在同一个项目中添加 ASP.NET MVC 和 Web API Web 应用程序

如何在同一个域上托管我的API和Web应用程序?

同一个基于 Tomcat 的应用程序中的 Web 套接字和 Rest API

在同一项目中添加ASP.NET MVC和Web API Web应用程序

Web应用程序和API

我可以将一个 NextJs api 用于 Web 和移动应用程序吗?

如何在同一地址上托管Web API和MVC应用程序

从Serverate MVC应用程序本地引用Web Api

从Android应用程序调用MVC Web API

一个项目与单独项目中的Web API和Web应用程序

如何在MVC Web API服务和使用它的应用程序中分离对象?

混合或不混合ASP.NET MVC应用程序和Web API

如何以及在何处使用Web API2和MVC 5应用程序

如何使用MVC 5和Web API构建Android应用程序?

MVC 5和Web API之间的Owin身份验证(单独的IIS应用程序)

在同一Azure Web应用程序中部署angular 6应用程序和Web API

如何在混合的Web API和MVC应用程序中使用Autofac解析Web API控制器?

需要相同用户的MVC应用程序调用Web API应用程序

Web 应用程序、Web API 和移动应用程序之间的身份验证

同一应用程序/服务中的Web Api和Web ui

MVC与用于多页面应用程序的Web API。是未来的Web API吗?

ASP MVC 5 Web应用程序和Winforms应用程序之间的WCF

如何在不同的基于Owin的相关MVC应用程序和Web API之间使用一个用户凭证?

是否可以将 Azure AD Web 应用程序的应用程序 API 权限限制为一个帐户?

Ruby on Rails Web 应用程序和 api 并排问题

Web应用程序(API和前端)-路线设计

MVC Web应用程序中Web APi的必要性

如何将我授权的 web api 用于我的 mvc web 应用程序