删除返回错误 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) 找到这个确切的字符串 -<configuration>
。搜索时,确保Look in
设置为Entire Solution ( Including External Items )
,Look at these file types
设置为*.*
。 Find Results 1
或 Find 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。我没有大多数人说要编辑的网络配置文件,所以我迷路了的主要内容,如果未能解决你的问题,请参考以下文章
jQuery Blueimp FileUpload 上的 DELETE 方法不允许使用 Codeigniter/PHP(405 错误)?