C# Can';dotnet core api上的t调用控制器方法:没有中间件来处理请求

C# Can';dotnet core api上的t调用控制器方法:没有中间件来处理请求,c#,angular,.net-core,asp.net-core-webapi,C#,Angular,.net Core,Asp.net Core Webapi,我在使用angular的dotnet核心api时遇到了一个问题。 我只是制作了一个登录表单和一个UserController来处理jwt的登录请求,但每当我点击“登录”按钮并从我的angular应用程序调用UserController的登录方法时,我都会这样做: this.http.post<any>(environment.baseUrl + `api/user/login`, user) 您可以尝试设置ASPNETCORE\u Environment=Development 您

我在使用angular的dotnet核心api时遇到了一个问题。 我只是制作了一个登录表单和一个UserController来处理jwt的登录请求,但每当我点击“登录”按钮并从我的angular应用程序调用UserController的登录方法时,我都会这样做:

this.http.post<any>(environment.baseUrl + `api/user/login`, user)
您可以尝试设置
ASPNETCORE\u Environment=Development

您还可以尝试更改angular.json中的“
ouputPath
”。通常它似乎是“
dist/{ProjectName}
”。将此更改为“
dist


更多详细信息,请参阅。

我从头开始重新启动了一个项目,并设法解决了这个问题。 我真的不知道是什么解决了这个问题,但我做了三件主要的事情:

  • 修改CORS政策
  • 返工angular和dotnet的环境设置
  • 解决了数据库连接问题
我的猜测是,我的环境设置有点糟糕,我请求了错误的api url,CORS阻止了我。所有这些都隐藏了我的数据库问题

很抱歉,我没有一个合适的解决方案,但因为我在这上面浪费了太多时间,重新启动更容易^^


无论如何谢谢你

对我来说,问题是appsettings.development.json中的“AllowedHosts”:“*”

我已经更改了要从根文件夹提供的angular应用程序的输出路径。添加开发环境只是在我从postman调用api时显示异常页面。我想我会尝试从头开始创建一个新项目,看看我是否能发现我做错了什么
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        var ConnectionString = Configuration.GetConnectionString("Default"); 
        services.AddDbContext<TheCompanyContext>(options => options.UseSqlServer(ConnectionString));

        services.AddControllers();
        services.AddSpaStaticFiles(configuration =>
        {
            configuration.RootPath = $"ClientApp/dist";
        });

        services.ConfigureCORS();

        var key = Encoding.ASCII.GetBytes(Configuration["AppSettings:AuthenticationSecret"]);
        services.AddAuthentication(x =>
        {
            x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(x =>
        {
            x.RequireHttpsMetadata = false;
            x.SaveToken = true;
            x.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(key),
                ValidateIssuer = false,
                ValidateAudience = false
            };
        });

        services.AddAuthorization(options =>
        {
            options.FallbackPolicy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
        });
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
            app.UseHttpsRedirection();
        }

        app.UseStaticFiles();
        app.UseSpaStaticFiles();
        app.UseSpa(spa =>
        {
            spa.Options.SourcePath = "ClientApp";
        });

        app.UseRouting();

        app.UseAuthentication();
        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}
[Route("api/[controller]/[action]")]
[ApiController]
public class UserController : Controller
{
    public UserController(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    [HttpPost]
    [AllowAnonymous]
    public ActionResult Login([FromBody]User user)
    {
        // do login stuff
    }
}