POST上的WPF和MVC4 Web API内部服务器错误500

时间:2013-10-09 20:23:52

标签: wpf asp.net-mvc-4 asp.net-web-api

所以我试图通过WPF服务附加到web api方法,但除GET之外的其他任何内容只能获得500错误。

WPF电话:

    using (var client = new HttpClient())
        {

            var user = new MyUser
            {
                EntityID = Guid.NewGuid(),
                FirstName = "WPF",
                LastName = "test"
            };
            var formatter = new JsonMediaTypeFormatter();
            HttpContent content = new ObjectContent<MyUser>(user, formatter);
            client.BaseAddress = new Uri("http://localhost:19527/api/");
            var response = await client.PostAsJsonAsync("MyUser", content);
                  //.ContinueWith((postTask) => result = (postTask.Result.Content == null) ? "Could not create user" : "User created successully!");
            var r = response.StatusCode;
        }'

...和接收控制器:

    public HttpResponseMessage Get(string badgeId)
    {
        return Request.CreateResponse<bool>(HttpStatusCode.OK, (service.UserByBadge(badgeId) != null));
    }

    public HttpResponseMessage Put(MyUser user)
    {
        return Request.CreateResponse<bool>(HttpStatusCode.OK, service.UpsertUser(user));
    }

    public HttpResponseMessage Post(MyUser user)
    {
        if (service.UpsertUser(user)) return Request.CreateResponse<MyUser>(HttpStatusCode.OK, service.Get<MyUser>(u => u.BadgeID == user.BadgeID));
        return Request.CreateResponse<MyUser>(HttpStatusCode.NoContent, null);
    }'

WebApi控制器上的service是一个GenericRepository,它工作正常,因为Get方法按预期返回。只有当我使用Post时才会出现错误。调试方法会在Get中抛出断点,但不会在Post中抛出,所以我认为它不会被调用。

这是路线配置:

    routes.MapRoute(
            name: "Default",
            url: "api/{controller}/{action}/{id}",
            defaults: new { controller = "{controller}", action = "{action}", id = UrlParameter.Optional }
        );

我尝试过其他SO帖子中的不同示例,但似乎没有一个具体解决这个问题。我猜测我如何构建Post()方法有什么问题?

=============================================== =================

解决方案:传递的模型是失败的属性验证。为什么这会导致500,不确定。但是一旦我解决了这个问题,API方法就开始工作了。

如果有人有“为什么”的解释,很想知道以备将来参考。

0 个答案:

没有答案