.net core swagger 不支持httpdelete/httpput方法,报405错误,而用postman试了下,接口是可以访问的(前端也可正常调用)。试了好多方法,包括什么移除webdev、在使用中间件的时候配置SupportedSubmitMethods。都没用。
本地调试和发布到iis10.0都不行。开发环境用的vs2017,.NET Core2.2,Swagger4.0.1
本地应该是没问题的.问题就是webdeploy
我以前也遇到过.方法被发布用拦截了.
我这边本地也有问题,,
@萝卜小兔子头: 意思是.同样的接口在postman里.用delete/put方法就能访问.
在swagger的模拟请求里就报405错误?
@吴瑞祥: 是的,前端都可以调用,就是用swagger就报405错误
@萝卜小兔子头: 那你按f12 看2次请求的报文.发上来.
建议将日志级别设置为 debug ,然后看一下是哪个地方返回了 405
都没用进入到action。。
@萝卜小兔子头: 只要进入 asp.net core runtime 就会有日志
解决了,原来是自己秀逗了。。
以前遇到过,通过修改delete/put为post这种变通方式解决了,以下链接供参考
https://docs.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications
https://stackoverflow.com/questions/15619075/webapi-delete-not-working-405-method-not-allowed
谢谢,我的问题解决了~~本来想妥协用post,不过强迫症忍不了,试了N种方法终于成功了,继续用四种请求方式。
@萝卜小兔子头: 亲,说下怎么解决的呀
之前写了两个项目没问题,新搭的项目怎么也跑不通。
@如虎添翼: 也是这个问题吗?
@如虎添翼:
iis的webconfig主要是这一段,还有要注意路由是否写正确。
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
<add name="aspNetCore" path="" verb="" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\OTC.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
<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>
</system.webServer>
你这人不行,只有问题,没有解决方法
asp.net core 版本是多少?iis 版本是多少?
– dudu 5年前@dudu: 本地调试和发布到iis10.0都不行。开发环境用的vs2017,.NET Core2.2,Swagger4.0.1
– 萝卜小兔子头 5年前