asp.net core webapi PUT,DELETE IIS失败 调式了一天,基本要放弃了

aspnet30 2018-12-30 06:33:25
asp.net core webapi PUT,DELETE IIS失败 调式了一天,基本要放弃了

用 asp.net core webapi 做前后端分离

GET,POST都没问题


PUT,DELETE就是不行,IIS8.5和IIS10都试了,网上各种资料查找,各种配置都试了,就是不行。

一直报错:405 (Method Not Allowed)

有人用过吗,用ajax跨域(已做跨域处理),调用GET,POST都没问题,PUT,DELETE就是不行,一直报错。
...全文
849 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dotnba 2020-02-09
  • 打赏
  • 举报
回复
Kestrel怎么支持Put/Delete等其他Http方法
  • 打赏
  • 举报
回复
不过我们纠结一下背后的原因,为什么那些面向数据库的所谓“架构”思路放到应用前端,就被斩断了!
  • 打赏
  • 举报
回复
WebDav 之类的默认不支持 restful。
  • 打赏
  • 举报
回复
  <system.webServer>
    <handlers>
      <!--<remove name="WebDAV" />-->
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <httpProtocol>
      <customHeaders>
        <!-- 先移除后添加,确保起作用 -->
        <remove name="Access-Control-Allow-Origin" />
        <remove name="Access-Control-Allow-Headers" />
        <remove name="Access-Control-Allow-Methods" />
        <remove name="Access-Control-Max-Age" />
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="*" />
        <add name="Access-Control-Max-Age" value="1728000" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
      </customHeaders>
    </httpProtocol>
    <modules>
      <!--<remove name="WebDAVModule" />-->
      <remove name="TelemetryCorrelationHttpModule" />
      <add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="integratedMode,managedHandler" />
      <remove name="ApplicationInsightsWebTracking" />
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
    <!--<directoryBrowse enabled="true" />-->
  </system.webServer>
  • 打赏
  • 举报
回复
IIS只是Kersteral的前置,所以IIS本身也需要支持PUT和DELETE才能到你的Core应用 所以你应该按2L的尝试下,如果不行,那就去找下非Core版本如何设置IIS支持PUT和DELETE
  • 打赏
  • 举报
回复
随便说一个,比如说"买一笔基金",我也不认为这一定就是 put 操作。实际上我认为根本不可能说死什么数据库增删改查操作,因为那是面向对象的业务行为,花钱买基金怎么就是 put 操作呢?它明明就是"买"操作,但是需要转换为多少sql语句和其它SOA调用代码,其实是后台设计师的另外一种艺术,后台系统会通盘考虑每一种业务到底该如何提供服务的。不要在前端协议中想当然地简化为什么put,那会阻塞系统后台平台扩展的想象力。
  • 打赏
  • 举报
回复
你应该贴出服务器端调试信息吧。put、delete 等等,当服务端代码运行出错时,可能也是 4xx 错误而不是 5xx 错误信息。 不过从设计上说,绝大多数功能都是行为操作。例如"给一个订单调整发货时间"你说这个需求是 put 还是别的什么? 把面向对象的方法行为说成是面向数据库表的增删改查,这本身就是一种设计问题。实际上我们应该忘掉套用增删改查的习惯(就好像小孩儿断奶一样),以前端需求设计为主,要稍微花点时间去写后台代码,而不是为了少写后台代码而牺牲前端编程能力。
godshome 2019-01-02
  • 打赏
  • 举报
回复
参考下: https://stackoverflow.com/questions/20083125/net-web-api-2-and-iis-put-delete-not-working?r=SearchResults https://stackoverflow.com/questions/10906411/asp-net-web-api-put-delete-verbs-not-allowed-iis-8?r=SearchResults
圣殿骑士18 2019-01-01
  • 打赏
  • 举报
回复
put delete 这种鸡肋,还是不要理它。
netharry 2019-01-01
  • 打赏
  • 举报
回复
老外的方案:加个Web.config <?xml version="1.0" encoding="utf-8"?> <configuration> <!-- To customize the asp.net core module uncomment and edit the following section. For more info see https://go.microsoft.com/fwlink/?linkid=838655 --> <system.webServer> <modules> <remove name="WebDAVModule" /> </modules> <handlers> <remove name="aspNetCore" /> <remove name="WebDAV" /> <!-- I removed the following handlers too, but these can probably be ignored for most installations --> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONSVerbHandler" /> <remove name="TRACEVerbHandler" /> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" /> </system.webServer> </configuration>
EdsionWang 2019-01-01
  • 打赏
  • 举报
回复
真的一定要用PUT、DELETE吗,POST也可以解决
masanaka 2018-12-30
  • 打赏
  • 举报
回复
不知道是不是WebDAVModule的问题。
https://hovercraft.ie/asp-net-core-web-api-put-delete-methods-not-allowed-405-error/
https://stackoverflow.com/questions/48188895/asp-net-core-with-iis-http-verb-not-allowed
https://ignas.me/tech/405-method-not-allowed-iis/

62,017

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧