Asp.net 非REST服务的Web API路由
我正在设计一个与REST无关的Web服务。它备份单页应用程序,目前必须实现三种简单方法:Asp.net 非REST服务的Web API路由,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,我正在设计一个与REST无关的Web服务。它备份单页应用程序,目前必须实现三种简单方法: public class ImportController : ApiController { [HttpPost] public string[] Parse(string source) { ... } [HttpPost] public ConvertResponse Convert(ConvertRequest request) { ... } [Http
public class ImportController : ApiController
{
[HttpPost]
public string[] Parse(string source) { ... }
[HttpPost]
public ConvertResponse Convert(ConvertRequest request) { ... }
[HttpGet]
public object GetHeaders() { ... }
}
当我使用Controller时,它工作得非常好,除了一件事:我需要将所有返回的JSON数据转换为camelCase。我在web上找到了一个非常合理的解决方案,它使用了CamelCasePropertyNamesContractResolver,但它只适用于WebApi控制器,因为返回JsonResult的MVC控制器总是使用JavascriptSerializer,而忽略此配置
当我将基类切换到ApiController时,路由中断:GetHeaders工作,但其他方法返回404错误
我的路线配置如下:
routes.MapHttpRoute(
name: "ImportParse",
routeTemplate: "import/{action}",
defaults: new { controller = "Import" }
);
成功的请求AngularJS:
var baseUrl = 'http://localhost:3821/';
$http.get(baseUrl + 'import/getHeaders').success( ... );
未成功的请求:
$http.post(baseUrl + 'import/parse', { source: 'test' }).success( ... );
错误:
message: "No HTTP resource was found that matches the request URI 'http://localhost:3821/import/parse'."
messageDetail: "No action was found on the controller 'Import' that matches the request."
如何为这些方法定义正确的路由规则?很可能Web Api正在寻找支持HttpPost并具有对象参数的解析操作。因为您发布的是对象,而不是字符串,所以得到的是404 要解决此问题,请尝试发送: $http.postbaseUrl+'import/parse','test'。成功 谢谢!我添加了一个带有Source字段的ParseRequest,现在可以正常工作了。非常感谢。