.net http发送put、delete请求报405错误解决办法

在项目的webconfig中,配置如下:

<system.webServer>

    <httpProtocol>
      <customHeaders >
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="X-Requested-With,Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
    </httpProtocol>
    <handlers>
      <remove name="WebDAV" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
      <add name="CGroupTypeCreditReqSetHandler" path="CGroupTypeCreditReqSetHandler.ashx" verb="*" type="EXESAC.SAMS.FinalApplication.Teacher.CGroupTypeCreditReqSetHandler"/>
      <remove name="OPTIONSVerbHandler" />
    </handlers>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
    </modules>

  </system.webServer>


注意对应加粗部分,与自己的一般处理程序对应,可以写多个add节点。

`System.Net.Http.HttpRequestException` 是 .NET Framework 中的一个异常类型,它通常在使用 `HttpClient` 类进行网络请求时抛出。当你尝试从远程服务器获取数据,比如发送 HTTP 请求(GET、POST、PUTDELETE 等),如果遇到任何网络错误、服务器响应状态码不是 200 OK 或者请求过程中发生其他意外情况,就会引发这个异常。 具体可能的原因包括但不限于: 1. **网络连接问题**:无可用网络、超时或断开连接。 2. **服务器问题**:服务器不可达、拒绝连接或返回错误的状态码。 3. **请求格式错误**:如无效的 URL、认证失败等。 4. **HTTP 方法限制**:例如某些 API 只接受特定的方法。 5. **请求体过大或不完整**:当请求数据超出服务器限制时可能会导致错误。 6. **API 已更改或已移除**:如果你的代码依赖于过时的 API,新的版本可能会抛出此异常。 要处理 `HttpRequestException`,你可以这样做: ```csharp try { var response = await httpClient.GetAsync("https://api.example.com/data"); response.EnsureSuccessStatusCode(); // 检查状态码是否为 2xx var content = await response.Content.ReadAsStringAsync(); } catch (HttpRequestException ex) { Console.WriteLine($"Error: {ex.Message}"); // 进行错误处理,如记录日志、重试、显示给用户等 } ``` 在这里,我们首先尝试获取响应,然后检查状态码是否成功(200-299)。如果不成功,`EnsureSuccessStatusCode()` 方法会抛出异常,我们可以捕获并处理这个异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值