【发布时间】:2026-01-12 09:50:02
【问题描述】:
当我调用我的 API Web 服务时,它返回一个空数组。
在我的 Header 请求中,我只有一个用于身份验证的 jwt 令牌
在 Angular 中:
getSheets(): Observable<Sheet[]> {
return this.http.get(this.config.apiUrl + '/api/SheetsRelationAPI', this.jwt())
.map(this.extractData)
.do(data => console.log('SheetsData:', data)) // debug
.catch(this.handleError);
在 Asp.net MVC 5 中:
[HostAuthentication("bearer")]
[System.Web.Http.Authorize]
public class SheetsRelationAPIController : ApiController
{
private GSheetsContext db = new GSheetsContext();
// GET: api/SheetsRelation
[ResponseType(typeof(SheetsRelationView))]
public IQueryable<SheetsRelationView> GetSheetsRelation()
{
var claims = (User.Identity as System.Security.Claims.ClaimsIdentity).Claims;
var username = "";
foreach (var claim in claims)
if (claim.Type.ToString() == "sub")
{
username = claim.Value.ToString();
}
//var tasks = from tsk in db.SheetsRelation.Include(s => s.SheetsContent.id )
//select tsk;
var sheetsRelation = db.SheetsRelationView.Where(jt => jt.Username == username);
return sheetsRelation;
}
}
更新 1:
它似乎在 PostMan 中有效,我有一个 JSON 作为响应但在 Angular 中,我没有任何 JSON 作为响应。
【问题讨论】:
-
声明似乎是空的。你调试过控制器看看发生了什么吗?
-
我认为
this.http.get(this.config.apiUrl + '/api/SheetsRelationAPI', this.jwt())应该是this.http.get(this.config.apiUrl + '/api/SheetsRelationAPI', { headers: yourHeaders }。您尚未指定要在键值对中发送的标头。 -
@Hinrich 声明不为空,我们用 Postman 测试,成功返回 JSON
-
@EkanshRastogi 让我试试你的代码,jwt() 是一种返回标头的方法,但我将提取它并手动设置以查看结果
标签: asp.net json asp.net-mvc angular