webClient POST不起作用

时间:2016-06-05 16:02:49

标签: c# asp.net-web-api webclient

我正在尝试使用webClient将表单发布到服务器。这是我的请求代码。

WebClient myWebClient = new WebClient();

NameValueCollection myNameValueCollection = new NameValueCollection();

myNameValueCollection.Add("about", about);
myNameValueCollection.Add("firstname", firstname);
myNameValueCollection.Add("lastname", lastname);
Uri uri = new Uri("http://192.168.1.102:1992/api/member/updateprofile");
myWebClient.UploadValuesAsync(uri,"POST", myNameValueCollection);

此请求不会进入服务器。我已经检查了Url并且它是正确的,因为我可以使用fiddler和使用httpWebRequest客户端发出请求。我没有看到我的代码有任何问题。这可能是什么问题?

我的服务器端代码如下所示:

[HttpPost]
[Route("updateprofile")]
public HttpResponseMessage updateProfile()
{
    var result = new HttpResponseMessage(HttpStatusCode.OK);

    var httpRequest = HttpContext.Current.Request;

    return result;
}

1 个答案:

答案 0 :(得分:0)

好的,您正在显示操作的属性路线。但是没有关于控制器的路由/路由前缀与您显示的URL匹配的详细信息。

[RoutePrefix("api/member")]
public class MemberController : ApiController {

    //eg POST api/member/updateprofile
    [HttpPost]
    [Route("updateprofile")]
    public HttpResponseMessage updateProfile() {
        var result = new HttpResponseMessage(HttpStatusCode.OK);

        var httpRequest = HttpContext.Current.Request;

        return result;
    }
}

确认您的路线并正确配置它们。

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Attribute routing.
        config.MapHttpAttributeRoutes();

        // Convention-based routing.
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}