尝试从Windows窗体应用程序(WebClient类)进行POST时出现405错误

时间:2018-11-15 07:19:11

标签: c# rest iis

我正在尝试使POST请求生效。我正在使用Windows Form和WebClient类来使用我创建的REST Web API。 Windows窗体会将对象列表传输到Rest Web API。

我的WinApp代码

public static void BacklogListAdd(List<qmtRequest> _data)
{
    var wi = System.Security.Principal.WindowsIdentity.GetCurrent();

    var wic = wi.Impersonate();

    var data = JsonConvert.SerializeObject(_data);

    var urlLocal = "http://localhost:56499/request/item/add";
    var url = "http://169.10.77.243/spa_solutions/ph18-mdm003-fe/request/item/add";

    using (var client = new WebClient { UseDefaultCredentials = true })
    {
        client.Headers.Add(HttpRequestHeader.ContentType, 
                           "application/json; charset=utf-8");

        client.UploadData(
            "http://169.10.77.243/spa_solutions/ph18-mdm003-fe/request/item/wee", 
            "POST", 
            Encoding.UTF8.GetBytes(data));

    }
}

Web API代码

[Authorize]
[HttpPost]
[Route("Item/Wee")]
public IHttpActionResult BacklogAddItem(List<qmtRequest> _RequestList)
{
    using (qmtdb)
    {
        qmtdb.qmtRequests.AddRange(_RequestList);
        qmtdb.SaveChanges();

        return Ok();
    }
}

尽管我已经进行了一些故障排除,但是如果我尝试使用GET而不是POST的话,它将可以正常工作。另一个注意事项是,当我尝试在localhost中使用POST时。

提琴手 enter image description here

Web配置

    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET, POST" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Credentials" value="true" />

1 个答案:

答案 0 :(得分:0)

405状态码为“方法不允许错误”。 检查您的REST API方法类型和相同的方法类型调用。 希望您会从REST API中获得响应