记一次所有DELETE 请求全部404报错问题(put和get等其他请求均正常)
原服务器上程序已经正常跑过一段时间了,采用的.net framework框架,一直都没有什么问题。突然使用人员说有一条数据没办法删除,然后赶紧排查,验证了接口是正常的,本地调试删除也是正常的;在服务器端验证,所有的删除均报错404,其他请求全部正常。回想下最近在服务器上的操作,因为有的代码是.netcore写的,在服务器上安装了.netcore sdk,难道是因为这个原因,网上查了点资料,貌似没有人遇到过这个问题。
最后没办法,只能各种试,发现将托管模式改为集成就正常了,不是很明白原因,先记录一下吧。
顺便了解下经典模式和集成模式的区别:(除非特别老的系统,一般采用集成比较好)
经典模式
指的是与IIS 6或者之bai前版du本保持兼容的一种模式zhi.
在IIS 6.0中的经典模式中,ASP.NET是一个添加dao到IIS中的ISAPI。IIS 7.0之所以支持这种模式,是为了做到向后兼容。但是,经典模式缺少许多集成模式才能提供的特性。在经典模式中,IIS拥有自身的管道,这些管道可以通过创建一个ISAPI扩展进行扩充,而ISAPI扩展是以难以开发而著称的。ASP.NET作为一个ISAPI扩展运行,只是IIS管道中的一项组成部分。
注意,在这种情况下,ASP.NET仅当IIS处理ISAPI扩展时才能够发挥作用。
集成模式:
这种全新的模式,允许我们将ASP.NET更好地与IIS集成,甚至允许我们在ASP.NET中编写一些功能(例如Module)来改变IIS的行为(扩展)。集成的好处是,不再通过ISAPI的方式,提高了速度和稳定性。至于扩展,则可以使得我们对于IIS以及其他类型的请求有更多的控制。
利用集成模式,可以将ASP.NET作为IIS的有机组成部分。现在,IIS服务器的功能被划分为40多个模块,因此也就将IIS和ASP.NET的功能划分为不同的组成部分。诸如StaticFileModule、BasicAuthenticationModule、FormsAuthentication、Session、Profile,以及RoleManager等模块都是IIS管道的组成部分。
注意,FormsAuthentication、Session、Profile,以及RoleManager原本就是ASP.NET的组成部分,与IIS并无关系。