2

我有一个 Backbone.js 应用程序,它正在调用我的 WEB API 自定义 POST 方法之一。这是我的自定义 POST 的代码

WebApiConfig.cs

config.Routes.MapHttpRoute
            (
                name: "UserAdministrationApi",
                routeTemplate: "api/{controller}/PostUserInfo/{EmployeeDTO}",
                defaults: new
                {
                    EmployeeDTO = RouteParameter.Optional,
                    controller = "UserAdministration",
                    action = "PostUserInfo",
                });

控制器

        [HttpPost]
        [ActionName("PostUserInfo")]
        public HttpResponseMessage PostUserInfo(EmployeeDTO value)
        {
            // handling POST
        }

员工DTO

   public class EmployeeDTO
   {
    public bool masAccess { get; set; }
    public bool reportAccess { get; set; }
    public string name { get; set; }
    public string office { get; set; }
   }

当我甚至在使用 Backbone.js 代码测试它之前尝试在 Fiddler 中测试它时,我收到 500 内部错误。不知道出了什么问题

// 提琴手测试

POST : http://localhost:56501/api/useradministration/PostUserInfo



Request Body

  {
     masAccess:"true"
     reportAccess:"false"
   }

感谢您的帮助

4

1 回答 1

6

一些东西:

正如 Andrei 所提到的,EmployeeDTO 不应该是 routeTemplate 的一部分。

根据 JSONlint.com,您的请求正文不是有效的 JSON。尝试

{
  "masAccess": "true",
  "reportAccess": "false"
}

此外,您可能需要将标头添加Content-Type: application/json到您的 Fiddler 请求中。

于 2013-06-05T17:26:21.543 回答