【问题标题】:Angular service not hitting the required method in ASP.NET Web APIAngular 服务没有达到 ASP.NET Web API 中所需的方法
【发布时间】:2018-01-06 07:08:30
【问题描述】:

我正在从事一个项目,我想在其中向 Oracle 数据库添加一个值并从中获取价值。我正在使用 Angular 4,使用 VSCode 和 ASP.NET Web API,使用 Visual Studio 2015 进行服务。

我的 Angular 代码运行良好,但在调用时没有达到 ASP.NET Web API 中所需的方法。

我的 Angular 服务代码是

register(userInfo: any) {
    debugger;        
    var url1 = this.baseUrl;
    url1 += "api/signUp/SaveCustomer";
     return this._http.post(url1,userInfo);
  };

这里的基本网址是BASE_API_URL: "http://localhost:6705/

我的 ASP.NET Web API 服务方法是

[HttpPost]
public IHttpActionResult SaveCustomer( UserInfo user )
{
    // int result;

    // result = _customerManager.SaveCustomer(user);
    // if (result > 0)
    // {
    //    return Ok(result);
    // }
    // else
    // {
    //    return NotFound();
    // }
    return null;
}

它的控制器构造函数是

public signUpController()
{
    _customerManager = new CustomerManager();
}

当我运行项目时,我将调试器放在了两个地方,一个在构造函数中,另一个在方法Register。我的控制权属于构造函数,但它没有达到所需的方法。我真的很担心我是这项技术的新手。屏幕上没有显示错误。

【问题讨论】:

  • 检查浏览器控制台是否有错误
  • Angular 正在开发模式下运行。调用 enableProdMode() 以启用生产模式。写在上面没有显示错误

标签: asp.net-mvc angular asp.net-mvc-4 asp.net-web-api


【解决方案1】:

像这样使用 [FromBody]:

[HttpPost]
public IHttpActionResult SaveCustomer([FromBody] UserInfo user)
{
    ...
}

【讨论】:

  • 这有什么配置吗??
  • 当我从 Angular 服务中的 vs 代码调试时,我的路径变成了这样 url1 = "localhost:6705/api/signUp/SaveCustomer"
  • 请确保客户端和服务器端UserInfo的所有字段相同。虽然,HTTP post 类型请求需要 FromBody。
  • 所有都是一样的,没有唯一的错误,我正在检查先生它对这个类的构造函数的共享控制,但不幸的是它没有控制我想要运行的那个类的方法
【解决方案2】:

如果你从 Angular 2 类型脚本调用 Web API 的 post 方法,不要忘记添加以下标题内容和参数对象。

register(userInfo: any) {
    var params = new URLSearchParams();
    params.set('username', userInfo.username);
    params.set('password', userInfo.password);
    let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
    var url1 = this.baseUrl;
    url1 += "api/signUp/SaveCustomer";

    return this._http.post(url1, params.toString(), { headers: headers })

  };

更新

register(userInfo: any) {

        //let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
        let headers = new Headers({ 'Content-Type': 'application/json' });

       var url1 = this.baseUrl;
        url1 += "api/signUp";
        console.log(url1);
        return this._http.post(url1, userInfo, { headers: headers });

    };

【讨论】:

  • 确保,FromBody 已添加到您的 Post 方法中
  • public IHttpActionResult SaveCustomer([FromBody] UserInfo user ) 先生已添加,先生主要问题是没有显示错误
  • 它使用构造函数但没有获取注册方法
  • 让我在最后重现这个问题
  • 我怎样才能重现它先生?
猜你喜欢
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 2011-08-28
  • 2012-12-17
  • 1970-01-01
相关资源
最近更新 更多