我是asp.net核心应用程序的新手。
我有一个使用存储库模式的asp.net核心应用程序。它有一个名为 ApplicationsAPIController 的api控制器。
ApplicationsAPIController 有一个 GetApplications 方法,可以返回所有应用程序。
我已将应用发布到远程服务器。从邮递员调用GetApplications api时会抛出 500内部服务器错误,并将以下HTML作为响应:
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request. </h2>
<h3>Development Mode</h3>
<p>
Swapping to
<strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>Development environment should not be enabled in deployed applications</strong>, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the
<strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to
<strong>Development</strong>, and restarting the application.
</p>
注意:上面的api在开发环境(本地)中完美运行。
根据错误,我认为我必须设置一个临时或生产环境。但我找不到任何好的和一步一步的文件来设置。我尝试了很多方法,但失败了。
答案 0 :(得分:0)
500错误意味着您的代码遇到问题,而不是您忘记分配正确的环境。你需要做的是看看实际的错误是什么。您有许多选项可能是最快的启用开发环境错误(考虑临时添加app.UseDeveloperExceptionPage();
或将环境设置为“DEV”)。更强大的方法是添加一些应用程序错误处理和日志记录(查看异常过滤器主题)。
答案 1 :(得分:0)
我认为您需要在WebAPI中启用CORS。
这里有一个简单的步骤可以启用。启用后,我遇到了500错误。 https://developer.okta.com/blog/2018/04/26/build-crud-app-aspnetcore-angular#run-and-test-with-fiddler-or-postman
示例吹气启用,但不安全。
在Startup.cs中,ConfigureService make
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
您的方法配置使用:
app.UseCors("CorsPolicy");
app.UseMvc();
将允许所有人访问您的API,我建议阅读有关CORS的Microsoft文档。 https://docs.microsoft.com/pt-br/aspnet/core/security/cors?view=aspnetcore-2.2
要解决错误500,请参阅本主题。我使用问题的配置并解决了我的问题。 Getting CORS error *only* on server exception calling ASP.NET Core Web API from Angular 6
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(o => o.AddPolicy("AllowAllPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
services.AddMvc();
services.AddOptions();
services.Configure<AppConfig>(Configuration.GetSection("AppConfig"));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors("AllowAllPolicy");
app.UseMvc();
}