将 HttpModule .Net 类库移植到 .Net Core Web API

4
我正在将一个项目从.NET Web应用程序迁移到.NET Core Web API。
我在IIS集成模式下使用了.net框架类库中的HTTP模块,因此想要将其原封不动地移植到我的新核心应用程序中。
我将web.config复制到了我的新核心应用程序中,并添加了对该Http模块的项目引用,它就开始工作了。
我的BeginRequest方法里有一些Context.Response.Write,每当我调用Web API时都可以看到这些语句。
但是,我在这里有一些问题:
  1. 没有打断点击中模块。
  2. 我以为没有加载符号,所以我在VS的模块窗口中查看,但没有任何模块被加载。
  3. 在将非核心项目加载到核心项目中时,是否有任何方法可以加载符号?
  4. 不知道如何在没有加载引用的情况下调用模块。
请问有人能够在上述问题上提供一些见解吗?
谢谢。

也许这会有帮助 https://dev59.com/6U7Sa4cB1Zd3GeqP21tt - Ivan Zaruba
2个回答

6
ASP.NET Core不支持HTTP模块,管道已经完全重新设计。它只被调用是因为你告诉IIS运行它,但就你的应用程序而言,它对可见性没有任何影响(在Core世界中,IIS是“外部”的)。Microsoft在这里提供了一些不错的文档,介绍如何转换到新的中间件系统(太多内容无法重新发布或缩减为答案)。

https://learn.microsoft.com/en-us/aspnet/core/migration/http-modules


2

HTTP模块是经典的ASP.NET/IIS应用程序模型的概念。

ASP.NET Core不使用IIS的事件系统,它会将接收到的请求转发给ASP.NET Core应用程序进行处理,并返回结果。

如果您在web.config中使用http模块,不能保证它能够在正确的时间处理请求/响应的部分。此外,如果您成功地设置了模块排序,您将无法在IIS之外托管应用程序 - 您实际上将同时运行ASP.NET Core和ASP.NET。

如果您想将类似于模块的功能移植到ASP.NET Core应用程序中,最好的方法是使用中间件。在ASP.NET Core中,中间件是处理管道的一部分,并可在应用程序定义的管道点处理传入请求和传出响应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接