【发布时间】:2020-06-07 01:53:48
【问题描述】:
我的 dotnet core api 有角度问题。 我只是制作了一个登录表单和一个 UserController 来使用 jwt 处理登录请求,但是每当我点击“登录”按钮并从我的 Angular 应用程序中调用 UserController 的登录方法时:
this.http.post<any>(environment.baseUrl + `api/user/login`, user)
我总是收到以下消息:
“SPA 默认页面中间件无法返回默认页面'/index.html',因为没有找到,并且没有其他中间件处理该请求。”
我正在寻找的不仅仅是这个问题的解决方案,因为我整天都在寻找解决它的方法,但我不知道如何解决它。我查看了 iis 日志、事件查看器日志。我尝试调试并进行了大量互联网研究,但我找不到实际处理此类错误的正确方法
由于 dotnet 核心框架引发了错误,我真的不知道如何确定是我的控制器坏了还是我在配置服务时出错了。
您通常如何解决这个问题? 提前感谢您的时间和帮助;)
Startup.cs:
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();
});
}
}
用户控制器.cs:
[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
}
}
【问题讨论】:
标签: c# angular .net-core asp.net-core-webapi