javascript - Angular2 服务未将 JSON 传递给 WebAPI

标签 javascript c# angular typescript asp.net-web-api

试图理解我做错了什么。我正在尝试将带有 Angular 服务的 JSON 发布到 WebAPI2,一旦传递它,我想使用从该 JSON 获取的参数在数据库上执行存储过程。

然而这里发生了什么:

  • 已成功解析到 Web 服务的连接 - 好的,我从服务器收到响应

  • Web 服务上的 Debug.WriteLine 输出“VAR: 0 0”,而不是 JSON 中的实际参数

甚至不确定从哪里开始,问题是 Web 服务无法处理发送的 JSON 还是 Angular 无法正确传递值?怎么了?

ng2:

  updateKnowledge(knowledgeElement: KnowledgeElement) {
    this._action = "/post";

    this._url = CONFIGURATION.baseUrls.server + this._action;

    let headers = new Headers();
    headers.append('Content-Type','application/x-www-form-urlencoded; charset=utf-8');
    headers.append('Content-Type','application/json');

    this._http
        .post(this._url,JSON.stringify(knowledgeElement), { headers: headers})
                   .subscribe((res2) => {console.log('subscribe %o', res2)});
  }

export interface KnowledgeElement {
  knowledgE_USER_ID: number;
  knowledgE_NAME: string;
  knowledgE_DESCRIPTION: string;
  knowledgE_USER_SCORE: number;
}

网络服务:

        [HttpPost]
        [HttpGet]
        public IHttpActionResult Post([FromBody]getKnowledgeByUserId_Result value)
        {
            var dbContext = new KNOWH_TESTEntities();
            System.Diagnostics.Debug.WriteLine("VAR: " + value.KNOWLEDGE_USER_ID + " " + value.KNOWLEDGE_USER_SCORE);
            dbContext.updateKnowledge(value.KNOWLEDGE_USER_ID, value.KNOWLEDGE_USER_SCORE);

            return Ok();
        }

最佳答案

删除第一个content-type并更改服务参数中的name相当于发送的数据。

let headers = new Headers();
headers.append('Content-Type','application/json');

this._http
    .post(this._url,JSON.stringify(knowledgeElement), { headers: headers})
               .subscribe((res2) => {console.log('subscribe %o', res2)});

以及Web Api

public IHttpActionResult Post([FromBody]getKnowledgeByUserId_Result knowledgeElement)

关于javascript - Angular2 服务未将 JSON 传递给 WebAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41574468/

相关文章:

javascript - 使用strongloop简单的mongo对象更新插入

javascript - 如何递归调用异步函数?

C# 成员表达式 Func<T,object> 到 Func<T,bool> MethodBinaryExpression

c# - 为什么我们会使用 Directory.GetFiles() 而不是 Directory.EnumerateFiles()?

c# - 如何在 C# 中将 double 值转换为 dateTime 值?

javascript - insertRow() 到特定行 id

javascript - 加载另一个API的数据的1个API

typescript - 如何冒泡angular2自定义事件

javascript - 从 MongoDB 查询中获取数据(在 Auth0 规则中)

Angular 4 : how to set a default radio button from a list