首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >主机如何区分MVC请求和Web请求

主机如何区分MVC请求和Web请求
EN

Stack Overflow用户
提问于 2019-10-23 22:19:48
回答 2查看 278关注 0票数 1

我是asp.net mvc和web的新手。我正在读一本书,上面写着:

ASP.NET MVC使用:System.Web.HttpRequest

与Web等价的是System.Net.Http.HttpRequestMessage

下面是描述web的请求和结果流的图片。

因此,我的问题是,宿主环境(通常是IIS)如何知道它应该创建一个HttpRequestMessage对象来表示来自客户端的请求?我的意思是,如果应用程序是MVC应用程序,IIS应该创建一个HttpRequest对象而不是HttpRequestMessage,那么IIS如何知道要创建哪个对象呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-23 23:07:14

您可以从发布的图片中看到,HttpRequestMessage只存在于“宿主”环境中,web浏览器客户端对此一无所知。

在“托管”世界中,IIS应用程序池正在运行您构建和部署的代码,这些代码非常了解您正在使用的框架,因为您的代码还包含您列出的使用程序集System.Web.或者System.Net..。

考虑一下,即使您已经显示了宿主、Controller和Action之间的分离,所有这些都运行在IIS中的同一个App中,后者再次运行您的代码,因此知道您的IL程序集是从您的特定源代码构建的。

票数 0
EN

Stack Overflow用户

发布于 2019-10-23 23:39:41

我不确定我是否理解你的问题,但这可能是你想要的:

--我的意思是,如果应用程序是MVC应用程序,IIS应该创建一个HttpRequest对象而不是HttpRequestMessage,那么IIS如何知道创建哪个对象呢?

您必须记住如何区分正常的MVC控制器和Web API控制器.

WebAPI控制器强制执行这个注释[ApiController],并且必须从ControllerBase继承

[ApiController] public class PeopleController : ControllerBase { //Your API methods here }

普通的MVC控制器只继承Controller基类:

public class PeopleController : Controller { //Your Action methods here... }

这些已经为您的应用程序创建配置,这将使您的托管环境更容易知道什么是正在进行和什么时候返回。

我希望你觉得这有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58531668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档