У меня есть действие C # WebAPI. Я пытаюсь опубликовать в нем строку (но строку в формате json) с помощью React.
По какой-то причине я получаю метод 405 Not Allowed, когда тип контента - aopplication / json. Urlencoded попадает в PostTransaction, но тело всегда имеет значение null.
Что мне нужно изменить, чтобы получить json в PostTransaction?
WebConfig
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
WebApiConfig
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
C # WebApi
[HttpPost]
[ActionName("PostTransaction")]
public string PostTransaction([FromBody] string body, string task, int key, string filters, string options)
{
// body is null from react when content type is urlencoded, but correct from jquery post
string returnString = "no data found";
if (body != null) {
returnString = body.ToString();
}
return returnString;
}
Реагировать
var dataToSend = JSON.stringify({ param1: "value1", param2: "value2"});
fetch('http://localhosturl/PostTransaction',
{
method: 'post',
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'application/json'
},
body: dataToSend
})
.then(response => {
}
JQuery Post
var dataToSend = JSON.stringify({ param1: "value1", param2: "value2"});
$.post('http://localhosturl/PostTransaction', { '': dataToSend }).done(function (data) {
console.debug(data); // returned data from Web API
});
Спасибо