删除返回错误 405(不允许方法) 我正在使用 React 和 ASP.net。我没有大多数人说要编辑的网络配置文件,所以我迷路了

Posted

技术标签:

【中文标题】删除返回错误 405(不允许方法) 我正在使用 React 和 ASP.net。我没有大多数人说要编辑的网络配置文件,所以我迷路了【英文标题】:DELETE returning ERROR 405 (Method not allowed) I'm using React and ASP.net. I don't have a web config file that most people say to edit so I'm lost 【发布时间】:2019-11-23 16:30:49 【问题描述】:

我正在尝试使用行上的 id 来删除行。该页面将加载,但在开发工具中它告诉我不允许删除方法。

我试过了 - 添加方法删除并删除它 - 添加和删除标题

目前没有任何效果

 handleDelete = patientId => 
  fetch("https://localhost:5001/api/PtSearchPg/delete" + patientId, 
    method: "DELETE",
    headers:  "Content-Type": "application/json" ,
    body: JSON.stringify( patientId )
  )
;

这是我的桌子,上面有删除按钮

        <tbody>
          this.state.patients.map(patient => (
            <tr key=patient.patientId>
              <td>patient.firstName</td>
              <td>patient.lastName</td>
              <td>patient.dob</td>
              <td>patient.unitId</td>
              <td align="center">
                <button
                  type="button"
                  className="btn btn-sm btn-warning btnspace"
                >
                  Edit
                </button>
                <button
                  id="delete"
                  type="button"
                  className="btn btn-sm btn-danger"
                  onClick=this.handleDelete(patient.patientId)
                >
                  Delete
                </button>
              </td>
            </tr>
          ))
        </tbody>

这是 API

// DELETE api/patients/5
[HttpDelete("/delete/id")]
public void Delete(int id)

  using (var DB = new AeffectContext())
  
    Patient deletePt = new Patient()  PatientId = id ;
    DB.Patient.Attach(deletePt);
    DB.Patient.Remove(deletePt);
    DB.SaveChanges();
  

所以我应该根据他们的 ID 删除该行中的患者,但现在我得到的只是 405 错误。

我是编码新手,所以我相信你会发现我做错的其他事情哈哈。

【问题讨论】:

您是否在 IIS 中托管? 您在哪个文件夹中查找您的 web.config? 请搜索 (Control-Shift-F) 找到这个确切的字符串 - &lt;configuration&gt;。搜索时,确保Look in 设置为Entire Solution ( Including External Items )Look at these file types 设置为*.*Find Results 1Find Results 2 窗口中显示哪些文件? 【参考方案1】:

首先,您不太可能使用 ASP.NET 并且没有 web.config 文件,因此,根据 cmets 的建议,请尝试在解决方案文件夹中搜索它。

此外,IIS 有自己的配置文件 (%windir%\System32\inetsrv\config\applicationHost.config),并且可以在其中启用/禁用各个 HTTP 动词。

如果您安装了 WebDAV,它会默认阻止 PUT 和 DELETE 请求(在 here 和许多类似问题中描述 - 很多人都会遇到这种情况)。您可以转到打开或关闭 Windows 功能 > IIS > 万维网服务 > 通用 HTTP 功能(假设您使用的是 Win10)并从那里删除 WebDAV 发布者。

希望这会有所帮助!

【讨论】:

感谢您的帮助。我进行了搜索,但在任何地方都找不到 web.config。我搜索了我的 api 和应用程序。如果这有什么不同,我会在前端使用 react。我尝试解决我刚刚收到 400 错误发布的那个人的问题。【参考方案2】:

“删除”动词并不意味着从数据角度删除。只需使用常规的“post”或“get”,然后在控制器上处理删除:

handleDelete = patientId => 
  fetch("https://localhost:5001/api/PtSearchPg/delete" + patientId, 
    method: "POST",
    headers:  "Content-Type": "application/json" ,
    body: JSON.stringify( patientId )
  )
;

【讨论】:

The "delete" verb does not mean delete from a data perspective developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE 听起来从数据的角度来看,这意味着删除。我的意思是,你的想法会奏效。但这充其量只是一种解决方法。

以上是关于删除返回错误 405(不允许方法) 我正在使用 React 和 ASP.net。我没有大多数人说要编辑的网络配置文件,所以我迷路了的主要内容,如果未能解决你的问题,请参考以下文章

Flask 文件上传返回错误 405 方法不允许

不允许使用 Subversion 405 方法

Web Api - 不允许使用 Catch 405 方法

jQuery Blueimp FileUpload 上的 DELETE 方法不允许使用 Codeigniter/PHP(405 错误)?

Jersey 中不允许的 405 方法正在返回 Tomcat 的 405 页面

405 方法不允许,弹簧启动,但我使用了 csrf 令牌头