我在Azure
运行的逻辑应用程序连接到内部部署数据库,我已经成功通过xamarin
表单发布数据但现在为了使逻辑应用程序链接更安全我想要创建{{ 1}}处理post请求。当我尝试通过邮递员测试它时,它会继续收到此消息
“消息”:“请求的资源不支持http方法'POST'。”
我已经在Web Api
中制作了帖子代码,我不知道为什么它说我的Asp.net
不支持Asp.net
方法发布?这是我的完整帖子源代码
html
请查看我的代码并告诉我我的错误在哪里,因为当我在xamarin.forms中尝试这个时它起作用,这里是邮递员身体请求
string sUrl = "My Logic Apps Link";
string sContentType = "application/json"; // or application/xml
// POST api/<controller>
public async void Post(string param1, string param2, string param3)
{
JObject oJsonObject = new JObject();
oJsonObject.Add("param1", param1);
oJsonObject.Add("param2", param2);
oJsonObject.Add("param3", param3);
HttpClient oHttpClient = new HttpClient();
var oTaskPostAsync = await oHttpClient.PostAsync(sUrl, new StringContent(oJsonObject.ToString(), Encoding.UTF8, sContentType));
if (oTaskPostAsync.IsSuccessStatusCode)
{
string content = await oTaskPostAsync.Content.ReadAsStringAsync();
content.ToString();
}
}
我尝试使用参数硬编码的get方法及其返回值
{
"param1":"value",
"param2":"value",
"param3":"value"
}
但我不知道为什么帖子模式总是会收到错误信息
[Route("postdata")]
// GET api/Post
public string Get()
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://xxx-xx.southeastasia.logic.azure.com");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(new
{
param1 = "value",
param2 = "value",
param3 = "value"
});
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
return result;
}
}
为什么会这样?我在asp.net中仍然是非常新的,你能告诉我我错在哪里的部分谢谢
答案 0 :(得分:0)
您需要将该属性添加到操作中:
[HttpPost]
public async void Post(string param1, string param2, string param3)
如果你通过身体发送参数,你需要告诉你的行动:
[HttpPost]
public async void Post([FromBody]YourClass params)
看一下这篇文章:https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/sending-html-form-data-part-1