【发布时间】:2013-12-23 23:02:37
【问题描述】:
我正在尝试使用 Fiddler 发送 POST 请求:
POST http://localhost:50196/api/values/json HTTP/1.1
User-Agent: Fiddler
Content-Type: application/json;
Host: localhost:50196
Content-Length: 73
{"ssn":1605789787,"creditScore":598,"loanAmount":10.0,"loanDuration":360}
这是我的 WebAPI 控制器,我将其反序列化为 .NET 类型,即我的 POCO。然后我得到 ssn 并生成一个我想返回的费率。
public class ValuesController : ApiController
{
[ActionName("json")]
public string Post(string request)
{
var json = JsonConvert.DeserializeObject<JsonModel>(request);
var ss = json.Ssn;
var random = new Random();
var interestRate = random.Next(100, 500);
var rate = interestRate / 100;
var delta = "{\"ssn\":" + ss + ",\"interestRate\":" + rate + "}";
return delta;
}
}
POCO:
public class JsonModel
{
[JsonProperty("ssn")]
public string Ssn { get; set; }
[JsonProperty("creditScore")]
public int CreditScore { get; set; }
[JsonProperty("loanAmount")]
public decimal LoanAmount { get; set; }
[JsonProperty("loanDuration")]
public int LoanDuration { get; set; }
}
WebAPI 配置:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new {action = @"[a-zA-Z]+", id = @"\*"}
);
}
这是我得到的错误:
[HttpException]: 路径 '/api/values/json' 的控制器 未找到或未实现 IController。已经 System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext,类型 controllerType) ved System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) ved System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext、IController&控制器、IControllerFactory&工厂) 已验证 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext、AsyncCallback 回调、对象状态)已验证 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback 回调,对象状态)ved
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext 上下文、AsyncCallback cb、对象 extraData) ved
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 已验证 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤, Boolean & completedSynchronously)
【问题讨论】:
标签: c# json asp.net-web-api