【问题标题】:getting status: 404, statusText: "Not Found", url ... in asp.net using core webApi?获取状态:404,statusText:“未找到”,url ...在asp.net中使用核心webApi?
【发布时间】:2019-11-05 10:00:23
【问题描述】:

在 ASP.NET Core Web API 中出现 404 错误。对于 ASP.NET,我使用 Angular 7 作为前端。当我单击表单的保存按钮时,表单数据以角度到达 post 方法,但单击保存后显示 404 错误。对于这种形式,我创建了第一个模型,在其中为数据库定义了它的属性,然后我为该模型创建了控制器并使用我在模型中声明的属性。

Angular 服务 ts 文件:

export class MurderService {
   BaseUrl :string ='';
  constructor( private http:HttpClient, private config:ConfigService) {
    this.BaseUrl=config.getApiURI();
   }

  murderQuestionnaire(data: any){
     var murderBody={
       Dead: data.Dead,
       Wounded: data.Wounded,
       CriminalsInvolved: data.CriminalsInvolved,
       CriminalAppearance: data.CriminalAppearance,
       VehiclesUsed: data.VehiclesUsed,
       WeaponsDescription :data.WeaponsDescription
     };
     return this.http.post(this.BaseUrl +'/Complians' , murderBody);//upto here data reaches 
      successfully
  }
}

此服务的 API 控制器:

    [Route("api/[controller]")]
    [ApiController]
    public class ComplainMurderController : ControllerBase
    {
        [HttpPost]
        [Route("Complians")]
        //api:/Complians
        public void PostComplainMurder(Complians complian)
        {
            var complianMurder = new Complians()
            {
                Dead = complian.Dead,
                Wounded = complian.Wounded,
                CriminalsInvolved = complian.CriminalsInvolved,
                CriminalAppearence = complian.CriminalAppearence,
                VehiclesUsed = complian.VehiclesUsed,
                WeaponsDescription = complian.WeaponsDescription
            };
            try
            {
               // var result = await complian.Add(complianMurder);
                AuthenticationContext authenticationContext = new AuthenticationContext();
                authenticationContext.Add(complianMurder);
                authenticationContext.SaveChanges();
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }
    }
}

错误

POST http://localhost:49601/api/Complians 404(未找到)

【问题讨论】:

  • 可能是因为您的路线定义为Complians,但您调用的是api/Complians
  • @lan Kemp upto api 它的 asp.net url 和 /complians 它在数据库中的表。
  • 到处混用“Complian”和“Complain”必然会导致错误。

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


【解决方案1】:

您的控制器路由定义为api/[controller](在您的情况下,这导致api/ComplainMurder)。您的操作定义为Complians。这些组合是您的实际路线:api/ComplainMurder/Complians,与 api/Complians 不匹配。

用这个改变你的 Angular 7 端将解决它:

return this.http.post(this.BaseUrl +'/ComplainMurder/Complians' , murderBody);

旁注:小心不正确/不一致的拼写(compli 而不是抱怨),因为这势必会在未来导致混淆和/或错误。

【讨论】:

  • 你的意思是我需要将 api/[controller] 更改为 api/[ComplianMurder].?
  • 您的操作路线与您的 Angular 帖子 URL 不同。您必须更改任一侧以使它们匹配。 return this.http.post(this.BaseUrl +'/ComplainMurder/Complians' , murderBody);
  • @WasifZaman 有一个按钮可以按下以接受答案。它应该在我的答案左侧,看起来像一个复选标记 (✓)
猜你喜欢
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 2018-04-27
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
相关资源
最近更新 更多