最近无意中看到BlogEngine.NET 3.3.5.0 已经发布了,提供了新的标准模板,于是下载到一台测试服务器中看看效果,发现后台的某些菜单无法打开,会出现404.2或者404.0错误。根据不同情况,主要和IIS的ISAPI和CGI限制的设置,处理程序映射模块,URL地址错误有关系。
先说下服务器环境,系统为windows server 2008 R2,IIS版本为7.5,应用程序池.NET版本为V4.0,BlogEngine.NET使用的数据库是Ms SQLServer。服务器是一台用于测试的服务器,配置什么的比较乱,修改的乱七八糟。
这里要提及重要的一点,官方推荐的托管管道模式为集成模式,如果使用经典模式又没有设置好ISAPI 和 CGI 限制(没有添加和启用.NET 4.0的aspnet_isapi.dll),很有可能会出现404.2错误,具体错误信息如下:
错误摘要
HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
详细错误信息
最可能的原因:
可尝试的操作:
错误截图如下:
具体解决方法其实错误信息提供的可尝试操作都仔细说明了,我的情况就是没有在启用aspnet_isapi.dll,详细步骤如下,首先打开IIS的ISAPI 和 CGI 限制:
可以看到默认ASP.NET V4.0的aspnet_isapi.dll是被禁用的,开启后即可解决问题,要注意64位和32位都要开启:
如果没有添加,要注意32和64位的aspnet_isapi.dll都要添加。
另外如果应用程序池使用的是集成模式,如果遇到404错误信息:
错误摘要
HTTP 错误 404.0 - Not Found 您要找的资源已被删除、已更名或暂时不可用。
详细错误信息
最可能的原因:
可尝试的操作:
具体错误截图如下:
这里依然先仔细阅读错误信息,一般根据提供的信息都可以解决问题。我遇到的是请求的URL错误,本来是要打开文章管理页面,正确的路径应该是这样的:/admin/#/content/posts,但是页面请求的URL不正确,我调整了URL后就可以正常打开了。
其实以前也常常遇到类似错误,不过当时没有做相关的笔记,还没有培养记录的好习惯,记得最头疼的一次要使用到失败请求跟踪功能去追踪具体的错误,后面问题解决了。一般来说类似的问题主要出现在应用程序池配置,ISAPI和CGI限制设置,处理程序映射,请求的URL路径以及文件,还有就是权限问题了。另外由于是测试服务器,上面还挂载了很多测试用的网站,甚至还有PHP的网站,也不排除一些配置上出现冲突。
关于失败请求跟踪功能建议看下这两篇文章:
另外这里有个可以参考的相同问题:
作者:十有三
出处:https://shiyousan.com/post/636150164614737349
版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。