为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Asp.net core Web API 2.0 返回 Http Error 500

为什么 Asp.net core Web API 2.0 返回 Http Error 500

C#
慕田峪4524236 2021-11-21 16:35:24
我已将 api 移动到与模板通常提供的文件夹结构不同的文件夹结构中。结构看起来像这样API  Controllers     LoginController.csLoginController 有一个基本的方法[Route("api/[Login]")]    public class LoginController : ControllerBase    {        [HttpGet]        public ActionResult<IEnumerable<string>> Get()        {            return new string[] { "value1", "value2" };        }    }程序.cspublic class Program    {        public static void Main(string[] args)        {            CreateWebHostBuilder(args).Build().Run();        }        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>            WebHost.CreateDefaultBuilder(args)                .UseStartup<Startup>();    }启动文件public class Startup    {        public IConfiguration Configuration { get; set; }        public Startup(IConfiguration configuration)        {            Configuration = configuration;        }        // This method gets called by the runtime. Use this method to add services to the container.        public void ConfigureServices(IServiceCollection services)        {            services.AddCors();            services.AddOptions();            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);        }        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.        public void Configure(IApplicationBuilder app, IHostingEnvironment env)        {            app.UseCors(builder => builder            .AllowAnyOrigin()            .AllowAnyMethod()            .AllowAnyHeader()            .AllowCredentials());            app.UseMvc();            app.Run(async (context) =>            {                await context.Response.WriteAsync("Hello World!");            });        }    }该解决方案构建良好。当我尝试使用以下网址访问页面时,它只是设置localhost is currently unable to handle this request.HTTP ERROR 500.https://localhost:44352/api/login/gethttps://localhost:44352/API/Controllers/login/get做一些设置需要添加返回的内容。
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

您没有定义默认路由,这很好,但是您完全依赖于每个控制器和定义了属性路由的操作。在您的 上LoginController,您确实有一个路由属性,但它不正确。括号用于替换某些路由值,如区域、控制器等;这并不表明您的实际控制器名称应该放在那里。换句话说,您需要[Route("api/Login")][Route("api/[controller]")],其中后者将Login被 ASP.NET Core替换为控制器名称。

此外,当使用路由属性时,动作名称不再起作用。如果不定义路由,则与定义空路由相同,即[HttpGet("")]. 因此,即使修复了您的控制器路由,该操作的 URL 仍然只是/api/login而不是 /api/login/get。如果你想要get,那么你需要将路由设置为:[HttpGet("get")]


查看完整回答
反对 回复 2021-11-21
  • 1 回答
  • 0 关注
  • 355 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信