首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当试图访问ASP.NET核心Web的端点时,HTTP错误404

当试图访问ASP.NET核心Web的端点时,HTTP错误404
EN

Stack Overflow用户
提问于 2022-07-18 08:21:12
回答 1查看 1.5K关注 0票数 1

我创建了一个新的ASP.NET核心Web项目。但是当我在我的开发环境中运行它时,它给了我"HTTP Error 404. This localhost page can't be found.“。我尝试通过在Program.csServiceExtension.cs类中放置几个调试点来调试应用程序,但是程序控件似乎没有进入Controller类和服务类。我的program.cs如下:

代码语言:javascript
复制
var builder = WebApplication.CreateBuilder(args);

// Including the path for configuration file for the NLog configuration.
LogManager.LoadConfiguration(string.Concat(Directory.GetCurrentDirectory(), "/nlog.config"));

// Add services to the container.
builder.Services.ConfigureCors();
builder.Services.ConfigureIISIntegration();
builder.Services.ConfigureLoggerService();
builder.Services.ConfigureSqlContext(builder.Configuration);
builder.Services.ConfigureRepositoryManager();
builder.Services.ConfigureServiceManager(); 
builder.Services.AddControllers().AddApplicationPart(typeof(CompanyEmployees.Presentation.AssemblyReference).Assembly);


var app = builder.Build();
if(app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
else
{
    app.UseHsts();
}
// Configure the HTTP request pipeline.

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.All });
app.UseCors("CorsPolicy");
app.UseAuthorization();

app.MapControllers();

app.Run();

ServiceExtension.cs类如下所示:

代码语言:javascript
复制
namespace CompanyEmployees.Extensions
{
    public static class ServiceExtensions
    {
        public static void ConfigureCors(this IServiceCollection services) =>
        services.AddCors(options =>
        {
        options.AddPolicy("CorsPolicy", builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
        });

        public static void ConfigureIISIntegration(this IServiceCollection services) =>
            services.Configure<IISOptions>(options =>
            {
                //We are not adding any options becasue we are configuring for default ones
            });

        public static void ConfigureLoggerService(this IServiceCollection services) => services.AddSingleton<ILoggerManager, LoggerManager>();

        public static void ConfigureRepositoryManager(this IServiceCollection services) => services.AddScoped<IRepositoryManager, RepositoryManager>();

        public static void ConfigureServiceManager(this IServiceCollection services) => services.AddScoped<IServiceManager, ServiceManager>();

        public static void ConfigureSqlContext(this IServiceCollection services, IConfiguration configuration) => services.AddDbContext<RepositoryContext>(opts => opts.UseSqlServer(configuration.GetConnectionString("sqlconnection")));
    } 
}

唯一的控制器类如下所示:

代码语言:javascript
复制
namespace CompanyEmployees.Presentation.Controllers
{
    [Route("api/companies")]
    [ApiController]
    public class CompaniesController : ControllerBase
    {
        private readonly IServiceManager _serviceManager;

        public CompaniesController(IServiceManager serviceManager)
        {
            _serviceManager = serviceManager;
        }

        [HttpGet]
        public IActionResult GetCompanies()
        {
            try
            {
                var companies = _serviceManager.CompanyService.GetAllCompanies(trackChanges: false);
                return Ok(companies);
            }
            catch
            {
                return StatusCode(500, "Internal Server Error");
            }
        }

    }
}

有人知道这里出了什么问题吗?或者如何有效地调试解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-18 09:26:10

你用你的控制器装饰了

代码语言:javascript
复制
[Route("api/companies")]

但是在您的调用中,您没有包含"api“。

只管打电话

代码语言:javascript
复制
  localhost:5000/api/companies
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73019299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档