AngularJS $http 和 WebApi 2
AngularJS $http and WebApi 2
我有一个刚刚出现的问题。
我有一个 Web API 有这个方法:
[HttpGet]
[Route("")]
public IHttpActionResult Get(OrderRequestViewModel model)
{
var order = new orderHeader()
{
sordNo = model.OrderNumber,
process = orderHeader.orderProcesses.Read
};
order.processInfos.read_CoreHistory = model.ReadCoreHistory;
var response = this.Connection.webServicesAdvanced.ordersHubAction_S(this.SecurityToken, order);
switch (response.state)
{
case processorResult.resultEnum.failed:
case processorResult.resultEnum.validationfailed:
throw new HttpException(500, response.info);
default:
return Ok(new OrderResponseViewModel(response.obj));
}
}
OrderRequestViewModel 只有 2 个属性:OrderNumber(字符串)和 ReadCoreHistory(布尔)。
在我的 Angular JS 应用程序中,我有一个如下所示的服务:
.factory('OrderService', ['$http', '$filter', 'apiUrl', function ($http, $filter, api) {
var _get = function (orderNumber, readCoreHistory) {
return $http.get(api + 'orders?orderNumber=' + orderNumber + '&readCoreHistory=' + readCoreHistory);
}
//-- removed for brevity --//
var service = {};
service.get = _get;
//-- removed for brevity --//
return service;
}])
当我从我的控制器调用 get() 方法时,如果我打开了 fiddler,它会显示:
No MediaTypeFormatter is available to read an object of type 'OrderRequestViewModel' from content with media type 'application/octet-stream'.
显然这是一个内容类型 header 问题,但我无权访问我可以看到的 ajax 调用选项。有谁知道我该如何解决这个问题?
GET
方法没有主体,复杂类型由 ASP.NET WebAPI 中的请求主体中的数据填充,您应该在方法签名中的复杂类型之前添加 [FromUri]
属性.
public IHttpActionResult Get([FromUri] OrderRequestViewModel model)
{ ...
我有一个刚刚出现的问题。 我有一个 Web API 有这个方法:
[HttpGet]
[Route("")]
public IHttpActionResult Get(OrderRequestViewModel model)
{
var order = new orderHeader()
{
sordNo = model.OrderNumber,
process = orderHeader.orderProcesses.Read
};
order.processInfos.read_CoreHistory = model.ReadCoreHistory;
var response = this.Connection.webServicesAdvanced.ordersHubAction_S(this.SecurityToken, order);
switch (response.state)
{
case processorResult.resultEnum.failed:
case processorResult.resultEnum.validationfailed:
throw new HttpException(500, response.info);
default:
return Ok(new OrderResponseViewModel(response.obj));
}
}
OrderRequestViewModel 只有 2 个属性:OrderNumber(字符串)和 ReadCoreHistory(布尔)。
在我的 Angular JS 应用程序中,我有一个如下所示的服务:
.factory('OrderService', ['$http', '$filter', 'apiUrl', function ($http, $filter, api) {
var _get = function (orderNumber, readCoreHistory) {
return $http.get(api + 'orders?orderNumber=' + orderNumber + '&readCoreHistory=' + readCoreHistory);
}
//-- removed for brevity --//
var service = {};
service.get = _get;
//-- removed for brevity --//
return service;
}])
当我从我的控制器调用 get() 方法时,如果我打开了 fiddler,它会显示:
No MediaTypeFormatter is available to read an object of type 'OrderRequestViewModel' from content with media type 'application/octet-stream'.
显然这是一个内容类型 header 问题,但我无权访问我可以看到的 ajax 调用选项。有谁知道我该如何解决这个问题?
GET
方法没有主体,复杂类型由 ASP.NET WebAPI 中的请求主体中的数据填充,您应该在方法签名中的复杂类型之前添加 [FromUri]
属性.
public IHttpActionResult Get([FromUri] OrderRequestViewModel model)
{ ...