Asp.net web api 不支持WEBApi 2.0 PUT
我正在开发一个用于REACT站点的intranet API。GET工作正常,现在我正在尝试开发post,但我一直从Postman那里得到“请求的资源不支持http方法‘PUT’”。我已经浏览了很多网站和页面,并尝试了我能找到的一切,直到搜索我的Machine.config和默认Web.config文件。我已经删除了对WebDav的任何引用,并将动词添加到我能找到的系统的每个部分 我正在Windows 7上使用IIS 7.5,同时使用VS2019和.Net 4.7.2 这是我的web.config:Asp.net web api 不支持WEBApi 2.0 PUT,asp.net-web-api,iis-7.5,put,http-status-code-405,Asp.net Web Api,Iis 7.5,Put,Http Status Code 405,我正在开发一个用于REACT站点的intranet API。GET工作正常,现在我正在尝试开发post,但我一直从Postman那里得到“请求的资源不支持http方法‘PUT’”。我已经浏览了很多网站和页面,并尝试了我能找到的一切,直到搜索我的Machine.config和默认Web.config文件。我已经删除了对WebDav的任何引用,并将动词添加到我能找到的系统的每个部分 我正在Windows 7上使用IIS 7.5,同时使用VS2019和.Net 4.7.2 这是我的web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="WebDAVModule" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET, POST, PUT, DELETE, DEBUG, OPTIONS" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
******************************编辑*******************************
添加React代码以进行put调用
export const SomeMethod_Update = (rowId, rowData) => (dispatch) => {
dispatch(Actions.SomeMethodLoading());
//var data={row: rowId, data: rowData};
fetchInit.method = "PUT";
fetchInit.body = JSON.stringify(rowData);
var myReq = new Request('/dataAPI/SomeMethod/' + rowId, fetchInit);
return fetch(myReq)
.then(response => {
if (response.ok) {
return response;
}
else {
var error = new Error("Error " + response.statusText);
error.response = response;
throw error;
}
}, error => {
var err = new Error(error.message);
throw err;
})
.then(response => response.json())
.then(SomeMethod => {
if (SomeMethod !== "false")
dispatch(Actions.SomeMethodLoaded(SomeMethod))
else
CurrentPage_Update({ componentId: 'NotAllowed' });
})
.catch((err) => dispatch(Actions.SomeMethodFailed(err.message)));
}
我最初没有把这个放进去,因为我从邮递员那里得到了同样的问题。下面是我正在发送的JSON示例,以备参考:
[
{
"id": 226,
"Case Number": 172524,
"Last Name": "lastName",
"First Name": "firstName",
"Initials": "",
"Bank #": "000 ",
"Transit #": "12345 ",
"Account #": "111111111 "
}
]
据我所知,这个问题有多种原因。我建议您首先检查react代码,以确保使用了正确的参数。where;'您尝试使用PUT方法的代码是什么?
export const SomeMethod_Update = (rowId, rowData) => (dispatch) => {
dispatch(Actions.SomeMethodLoading());
//var data={row: rowId, data: rowData};
fetchInit.method = "PUT";
fetchInit.body = JSON.stringify(rowData);
var myReq = new Request('/dataAPI/SomeMethod/' + rowId, fetchInit);
return fetch(myReq)
.then(response => {
if (response.ok) {
return response;
}
else {
var error = new Error("Error " + response.statusText);
error.response = response;
throw error;
}
}, error => {
var err = new Error(error.message);
throw err;
})
.then(response => response.json())
.then(SomeMethod => {
if (SomeMethod !== "false")
dispatch(Actions.SomeMethodLoaded(SomeMethod))
else
CurrentPage_Update({ componentId: 'NotAllowed' });
})
.catch((err) => dispatch(Actions.SomeMethodFailed(err.message)));
}
[
{
"id": 226,
"Case Number": 172524,
"Last Name": "lastName",
"First Name": "firstName",
"Initials": "",
"Bank #": "000 ",
"Transit #": "12345 ",
"Account #": "111111111 "
}
]