解决VUE项目IIS部署后接口请求405错误问题(MethodNotAllowed)
VUE项目部署IIS后接口请求405错误,源于默认StaticFile处理程序不支持POST请求,而History模式下请求落到index.html。在IIS处理程序映射中添加ServerSideIncludeModule模块处理*.html路径即可解决,需先安装“服务器包含”功能。
VUE项目IIS部署后接口请求405错误
最开始查看接口响应,发现是StaticFileModule模块报错。网上搜了一圈,都说这是谓词问题,但实际操作下来,单纯添加POST谓词根本不管用。

解决方法
其实只要在IIS处理程序映射中(或者直接在web.config里)添加一个规则:模块选ServerSideIncludeModule,路径设为*.html。具体配置如下:
如果IIS里没有ServerSideIncludeModule这个模块,需要先安装“服务器包含”功能。

以下仅作个人纪录
1. 打开IIS,找到处理程序映射,把StaticFile请求程序映射里的谓词改成全部,发现没用。
2. 修改.NET管道托管模式,也不起作用。一直在折腾程序映射,发现只要修改了StaticFile,模式条目类型就会由“继承”变成本地。
3. WebDev禁用、删除、重启,都解决不了。
4. 去官网看文档,发现原因1和原因3都不是我的情况,最后重点落在原因2——StaticFile这个处理程序上。
参考链接:HTTP 错误 405.0 - Internet Information Services | Microsoft Learn

5. 按照微软给出的方法,想用ASPClassic这个程序托管,结果发现服务器上压根没有asp,瞎搞一通没用,最后把IIS回退到最初版本。
6. 既然StaticFile修改一直无效,ASPClassic也行不通,那就自己新建一个映射。仔细看请求路径,发现请求落在index.html上,而且是POST请求。顺着这个思路新建一个映射,居然正常访问了。
7. 回过头检查StaticFile,发现它没有ServerSideIncludeModule模块。添加这个模块之后就会报错——可能是继承重名或者.NET模式环境问题,不想再深究了,直接回退对StaticFile的修改。

总结
这个问题的本质是IIS默认的StaticFile处理程序不支持POST请求,而Vue项目在History模式下,刷新页面或POST请求都会落到index.html上。通过添加一个由ServerSideIncludeModule处理*.html的映射,就能绕开StaticFile的限制。希望这个踩坑记录能帮到遇到同样问题的朋友。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。




