ASP.NET Core 2.0 Web API引发500错误并且不允许在http帖子上访问

时间:2018-06-22 09:52:18

标签: c# angular asp.net-web-api cors .net-core

首先,将策略添加到ConfigureServices方法中,从而在Startup.cs中设置了Cors策略:

 services.AddCors(
            cfg =>
            {
                cfg.AddPolicy("MyPolicy",
                    bldr => {  
                bldr.AllowAnyHeader()
               .AllowAnyMethod()
               .WithOrigins("http://localhost:8001"); });

                cfg.AddPolicy("AnyGET",
                    bldr => { bldr.AllowAnyHeader().WithMethods("GET").AllowAnyOrigin();});
            });

接下来,我将使用我的Configure方法中声明的策略:

            app.UseCors("MyPolicy");
            app.UseAuthentication();

           app.UseMvc(config => { config.MapRoute("MyAPIRoute", 
              "api/{controller}/{action}"); });

在“我的控制器”中,我已启用Cors来指定我的策略,并且我已经配置了特定的Controller方法来接受承载令牌,作为对http帖子进行身份验证的方式:

namespace My.Api.Controllers
{
[EnableCors("MyPolicy")]
public class AccountController : Controller
{

....

 [HttpPost]
    [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    public async Task<IActionResult> ChangePassword([FromBody] PasswordChangeViewModel model)
    {

我正在从我的有角度的应用程序对此方法发出http发布请求:

public changePassword(password: Password) {

return this.http.post("http://localhost:8000/api/account/changepassword", password,
  {
    headers: new Headers({"Authorization": "Bearer " + localStorage.getItem('token').toString()})
  }).pipe(map((res: Response) => res.json()));
}

我尝试了有关堆栈溢出的所有建议,但似乎没有任何效果,并继续出现此错误:

enter image description here

我为另一个项目设置了相同的设置,这从来都不是问题。唯一的不同是,我将此角度应用程序从5更新为角度6。此外,每当我从邮递员发出此呼叫时,它都会成功。我碰壁了,需要帮助!预先感谢!

更新 我已将角度通话更改为:

public changePassword(password: Password) {

let headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem('token').toString() });
let options = new RequestOptions({ headers: headers });

return this.http.post("http://localhost:8000/api/account/changepassword", password, options);
}

我仍然遇到相同的错误。

更新 我还尝试通过使用@ angular / common / http中的HttpClient来更改我的角度服务制作http帖子的方式:

public changePassword(password: Password) {

let headers = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem('token').toString() });


return this.httpClient.post("http://localhost:8000/api/account/changepassword", password, { headers: headers} );
}

更新 我正在与此圈子。好像我已经尝试了一切。请帮忙!

1 个答案:

答案 0 :(得分:1)

我终于在昨天发现了这个问题……很as愧,但是问题是我的密码模型属性之一与我的API中的ModelView密码不匹配。一旦他们匹配,就可以了...