我正在将项目从.net Web应用程序迁移到.Net核心Web API。
我正在使用HTTP模块,它是.net框架类库,在IIS集成模式下。
所以,想到移植到我的新核心应用程序。
我将web.config粘贴到我的新核心应用程序并添加了一个项目引用到该Http模块,它开始工作。
我在BeginRequest方法中有一些Context.Response.Write,每当我打电话给我的web api时,我都可以看到这些行。
但是,我在这里有一些问题。
有些人可以分享以上几点的一些意见。
THX。
答案 0 :(得分:3)
ASP.NET Core不支持HTTP模块,管道已经完全重新设计。它只是被调用,因为你告诉IIS运行它,但就你的应用程序而言,它没有任何可见性(IIS是"外部"你的应用程序在Core中世界)。
微软在这里转换到新的中间件系统时有一些不错的文档(太多了,不能重新发布或压缩成答案):
https://docs.microsoft.com/en-us/aspnet/core/migration/http-modules
答案 1 :(得分:2)
HTTP模块是经典ASP.NET / IIS应用程序模型的概念。
ASP.NET Core不使用IIS'事件系统,IIS收到的请求被转发到ASP.NET Core应用程序,由此应用程序处理并返回。
如果您在web.config中使用http模块,则不能很好地保证它有机会在适当的时间处理部分请求/响应。此外,如果您的模块订购工作正常,您将无法在IIS之外托管应用程序 - 您将有效地并行运行ASP.NET Core和ASP.NET。
如果要将类似模块的功能移植到ASP.NET Core应用程序,最好的起点是中间件。 middleware in ASP.NET Core是处理管道的一部分,可以在应用程序定义的管道中的某个点处理传入请求和传出响应。