最开始查看接口响应,发现是StaticFileModule 模块报错,网上搜索发现都说是谓词问题,实际我操作其实修改添加POST谓词没有用。
解决方法:添加一个规则,在IIS处理程序映射中或者web.config中直接添加handlers,模块为ServerSideIncludeModule,路径为*.html。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Handle History Mode and custom 404/500" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<handlers>
<add name="VuePostByHtml" path="*.html" verb="*" modules="ServerSideIncludeModule" resourceType="Either" />
</handlers>
</system.webServer>
</configuration>
如果没有ServerSideIncludeModule模块需要在IIS中安装服务器包含
--------------------------------------------------------------------------------------------------------------------------------
以下仅作个人纪录
1.打开IIS,找到处理程序映射,把StaticFile请求程序映射里的谓词改成全部,发现并没有用
2.修改.NET管道托管模式发现也不起效果。一直在修改程序映射,发现只要修改了StaticFile模式条目类型就会由继承变成本地。
3.WebDev禁用以及删除重启都无法解决这个问题。
4.在官网看文档发现原因1及原因3都不是我这个情况,最后着重落在原因2,StaticFile这个处理程序上面。
访问 Internet Information Services (IIS) 网站时出现 HTTP 错误 405.0 - Internet Information Services | Microsoft Learn
5.按照上面微软网站给出的方法,想用 ASPClassic 这个程序托管,发现我就没有asp,瞎搞一通没用,把IIS设置回退最初的版本。
6.由于之前StaticFile修改一直没有用,ASPClassic也行不通,想着就自己新建一个映射,仔细看看请求路径在index.html上,POST请求。按照这个逻辑新建一个映射,发现可以正常访问了。
7.回过头检查StaticFile文件没有ServerSideIncludeModule模块,在里面添加这个模块之后就会报错,感觉是继承重名或者.NET模式环境问题,不想再研究了,回退对StaticFile的修改。
参考:
https://learn.microsoft.com/zh-cn/iis/configuration/system.webServer/serversideinclude#overview
https://learn.microsoft.com/zh-cn/iis/get-started/introduction-to-iis/iis-modules-overview
https://www.cnblogs.com/lcxin/p/10851739.html
https://blog.csdn.net/caijunfen/article/details/78741990
https://www.cnblogs.com/hnlong1/p/5228644.html