Asp.net核心传递多个参数+ web api

时间:2017-05-12 20:12:50

标签: postman asp.net-core-webapi

我正在提交一个表单,该表单将三个值传递给控制器​​,即电子邮件,全名和id字段。

 @using (Html.BeginForm("SubmitResult", "TestAPI", FormMethod.Post, new { id = "postEmailForm" }))    
{
    <div id="details-container">
        <input type="text" name="email" />
        <input type="text" name="fullName" />
        <input type="text" name="studentId" />

        <button type="submit" id="send">Send</button>
    </div>
}   

控制器

  [HttpPost("SubmitResult/{email}/{fullName}/{studentId}")]
    [Authorize(Roles = "Admin, Shop")]
    public IActionResult SubmitResult(string email, string fullName, long? studentId)
    {
    }

但是,当我点击提交按钮时,它会在控制台中抛出一条错误消息。

  

选项https://localhost:50138/TestAPI/SubmitResult   净:: ERR_SSL_PROTOCOL_ERROR。

接头

  

请求网址:https://localhost:50138/TestAPI/SubmitResult

     

推荐人政策:no-referrer-when-downgrade

如何正确装饰控制器中的属性,以便我可以使用Postman传递多个参数来测试API?

我期待下面的内容可以用于测试。

  

http://localhost:50138/api/TestAPI/SubmitResult/test@gmail.com/MikeShawn/2

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题。

第一个问题是,当您发布尝试使用跨源请求发送数据时,它看起来就像。如果这是有目的的,那么你必须在管道中添加CORS中间件。如果没有 - 你必须弄清楚它为什么会发生并修复它。你的问题中没有足够的细节来说明它为什么会发生。

  

如果两个URL具有相同的方案,主机和端口,则它们具有相同的来源。

第二个问题是您尝试通过向URL添加参数来发送数据。这是错误的,因为数据将在请求正文中发送。因此,关于HttpPost属性,它应该如下所示:

[HttpPost]
[Authorize(Roles = "Admin, Shop")]
public IActionResult SubmitResult(string email, string fullName, long? studentId)
{
}

<强>更新

再看看你的问题。似乎带有表单的页面是使用http方案打开的,但POST请求实际上是https方案。因此,要解决第一个问题,请确保使用https方案加载带有表单的页面。