我已将 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")]
。
- 1 回答
- 0 关注
- 355 浏览
添加回答
举报
0/150
提交
取消