C#api 2.0 POST始终保持挂起状态,而不是返回数据
我创建了一个web api,可以从角度前端调用它。当我调试Post调用时,它会按预期工作,但是当我返回“newItem”对象时,它会在网络XHR日志中不断显示pending。如果我将我的OK(newItem)更改为204状态代码,它会正常工作,并且不会保持挂起状态。有人知道是什么导致了这种行为吗?非常感谢 我的API代码C#api 2.0 POST始终保持挂起状态,而不是返回数据,c#,api,C#,Api,我创建了一个web api,可以从角度前端调用它。当我调试Post调用时,它会按预期工作,但是当我返回“newItem”对象时,它会在网络XHR日志中不断显示pending。如果我将我的OK(newItem)更改为204状态代码,它会正常工作,并且不会保持挂起状态。有人知道是什么导致了这种行为吗?非常感谢 我的API代码 using DWP.Services.Interfaces; using DWP.ViewModels; using System.Web.Http; namespace D
using DWP.Services.Interfaces;
using DWP.ViewModels;
using System.Web.Http;
namespace DWP.Api
{
[Authorize()]
[RoutePrefix("api/teamnewsviews")]
public class TeamnewsViewsController : ApiController
{
ITeamnewsViewsService _teamnewsViewsService;
public TeamnewsViewsController(ITeamnewsViewsService teamnewsViewsService)
{
this._teamnewsViewsService = teamnewsViewsService;
}
[HttpGet]
// GET api/<controller>
public IHttpActionResult Get(string teamnewsItemId)
{
TeamnewsViewsViewModel newsItem = new TeamnewsViewsViewModel();
var teamNewsItem = _teamnewsViewsService.GetTeamnewsView(teamnewsItemId);
newsItem.Id = teamNewsItem.Id;
newsItem.TenantId = teamNewsItem.TenantId;
newsItem.NewsItemId = teamNewsItem.NewsItemId;
newsItem.ViewCount = teamNewsItem.ViewCount;
return Ok(newsItem);
}
[HttpPost]
[ActionName("Increment")]
public IHttpActionResult Post(string teamnewsItemId)
{
if (teamnewsItemId == "")
{
return BadRequest("The newsitem Id is invalid");
}
var teamNewsItem = _teamnewsViewsService.GetTeamnewsView(teamnewsItemId);
if (teamNewsItem == null)
{
return NotFound();
}
var newItem = _teamnewsViewsService.IncrementViewCount(teamNewsItem);
// var updatedTeamnewsitem = _teamnewsViewsService.GetTeamnewsView(teamnewsItemId);
return Ok(newItem);
}
}
}
使用DWP.Services.Interfaces;
使用DWP.ViewModels;
使用System.Web.Http;
名称空间DWP.Api
{
[授权()]
[RoutePrefix(“api/TeamNewsView”)]
公共类TeamnewsViewsController:ApicController
{
ITeamnewsViewsService团队新闻视图服务;
公共团队新闻视图控制器(iTeamNewsViews服务团队新闻视图服务)
{
这是._teamnewsViewsService=teamnewsViewsService;
}
[HttpGet]
//获取api/
公共IHttpActionResult获取(字符串teamnewsItemId)
{
TeamNewsViewsViewModelNewsItem=新的TeamnewsViewsViewModel();
var teamNewsItem=\u teamnewsViewsService.GetTeamnewsView(teamnewsItemId);
newsItem.Id=teamNewsItem.Id;
newsItem.TenantId=teamNewsItem.TenantId;
newsItem.NewsItemId=teamNewsItem.NewsItemId;
newsItem.ViewCount=teamNewsItem.ViewCount;
返回Ok(新闻项);
}
[HttpPost]
[ActionName(“增量”)]
公共IHttpActionResult帖子(字符串teamnewsItemId)
{
如果(teamnewsItemId==“”)
{
return BadRequest(“新闻项Id无效”);
}
var teamNewsItem=\u teamnewsViewsService.GetTeamnewsView(teamnewsItemId);
如果(teamNewsItem==null)
{
返回NotFound();
}
var newItem=\u teamnewsViewsService.IncrementViewCount(teamNewsItem);
//var updatedTeamnewsitem=\u teamnewsViewsService.GetTeamnewsView(teamnewsItemId);
返回Ok(新项目);
}
}
}
My db服务实现:
using DWP.Data.Helpers.Interfaces;
using DWP.Data.Model;
using DWP.Services.Interfaces;
using System.Linq;
namespace DWP.Services
{
public class TeamnewsViewsService : ITeamnewsViewsService
{
private IUnitOfWork _unitOfWork;
public TeamnewsViewsService(IUnitOfWork uow)
{
this._unitOfWork = uow;
}
public TeamnewsView GetTeamnewsView(string teamnewsId)
{
TeamnewsView teamnewsViews =
this._unitOfWork
.GetRepository<TeamnewsView>()
.GetAll()
.Where(tnv => tnv.NewsItemId == teamnewsId).FirstOrDefault();
return teamnewsViews;
}
public TeamnewsView IncrementViewCount(TeamnewsView teamnewsView)
{
teamnewsView.ViewCount = teamnewsView.ViewCount + 1;
this._unitOfWork.Commit();
var newTeamNewsItem = GetTeamnewsView(teamnewsView.NewsItemId);
return newTeamNewsItem;
}
}
}
使用DWP.Data.Helpers.Interfaces;
使用DWP.Data.Model;
使用DWP.Services.Interfaces;
使用System.Linq;
命名空间DWP.Services
{
公共类TeamnewsViewsService:ITeamnewsViewsService
{
私人工作单位;
公共团队新闻视图服务(IUnitOfWork uow)
{
这是._unitOfWork=uow;
}
公共TeamnewsView GetTeamnewsView(字符串teamnewsId)
{
团队新闻视图团队新闻视图=
这是我的工作单位
.GetRepository()
.GetAll()
.Where(tnv=>tnv.NewsItemId==teamnewsId).FirstOrDefault();
返回TeamNewsView;
}
公共团队新闻视图增量视图计数(团队新闻视图团队新闻视图)
{
teamnewsView.ViewCount=teamnewsView.ViewCount+1;
这是。_unitOfWork.Commit();
var newTeamNewsItem=GetTeamnewsView(teamnewsView.NewsItemId);
返回newTeamNewsItem;
}
}
}
结果是,它对另一个表有一个单目引用错误。我通过制作一个viewmodel修复了它,如下代码所示
TeamnewsViewsViewModel vm = new TeamnewsViewsViewModel();
var newItem = _teamnewsViewsService.IncrementViewCount(teamNewsItem);
vm.ViewCount = newItem.ViewCount;