【问题标题】:This localhost page can’t be found, possible configuration problem找不到这个localhost页面,可能是配置问题
【发布时间】:2019-10-21 08:39:17
【问题描述】:

无论我在运行我的 api 后尝试加载哪个页面,我都会收到“找不到此本地主机页面”404 错误,即使我尝试运行仅返回“Ok”的方法也是如此。 我认为问题可能在于我配置应用程序的方式。那,或者我在路由时犯了一些错误。

我尝试过修改应用配置,查看示例,但其中大多数都安装了额外的 NuGet 包。我尝试在ConfigureServices 方法中使用.AddControllers() 方法,导致语法错误,我尝试在Configure 函数中使用.UseRouting(),但又遇到语法错误。

启动类:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddScoped<IRepositoryWrapper, RepositoryWrapper>();
            services.AddDbContext<ArtGalleriesContext>(
                options=>options.UseSqlServer(
                    Configuration.GetConnectionString("Database")));
            //services.AddScoped<IArtItemRepository1, ArtItemRepository1>();
            services.AddMvc();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

节目类:

public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();

我正在尝试调用这个函数

 [Route("api/[controller]")]
    [ApiController]
    public class AdminController : ControllerBase
 [HttpGet("/user/add/{num1}/")]
        public IActionResult SumActionResult(int num1)
        {
            return Ok(num1 );
        }

像这样:api/admin/users/add/1 并让它在我的网页中显示 1 以确认功能。 我收到的是“找不到此本地主机页面”错误。

【问题讨论】:

  • 创建 HomeController 或更改 MapRoute
  • 将controller=Home 更改为controller=Admin 并没有成功。 localhost/api/admin/user/add/1 仍然返回 404。
  • 尝试 /user/add/1 而不是 api/admin/users/add/1,还要注意你在路由中有用户而不是用户
  • 是的,这条路线确实有效。我认为写在控制器类声明上方的 [Route("string/[controller]")] 将与所有其他路由声明连接。有什么办法获得吗?

标签: c# asp.net-core-webapi


【解决方案1】:

你需要这样的东西

 [HttpGet("user/add/{num1}")]
 public IActionResult SumActionResult(int num1)
 {
     return Ok(num1 );
 }

另请注意,在路线中您的用户不是“用户”。 更多详情可以阅读https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.2

【讨论】:

  • 他为什么需要这个,也许会建议一些代码修改,比如 num1
【解决方案2】:

你的问题就在这里。

[HttpGet("/user/add/{num1}/")]

由于前面的斜线 (/),路由只是 /user/add/{num1},不是 /api/admin/user/add/{num1}。去掉前面的斜线:

[HttpGet("user/add/{num1}/")]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    相关资源
    最近更新 更多