2

我是 asp.net 核心应用程序的新手。

我有一个使用存储库模式的 asp.net 核心应用程序。它有一个名为ApplicationsAPIController的 api 控制器。

ApplicationsAPIController有一个返回所有应用程序的GetApplications方法。

我已将应用程序发布到远程服务器。从邮递员调用 GetApplications api 时抛出500 Internal Server Error并带有以下 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 在开发环境(本地)中完美运行。

根据错误,我想我必须设置一个登台或生产环境。但我找不到任何好的和一步一步的文件来设置。我已经尝试了很多方法,但都失败了。

4

2 回答 2

2

500 错误意味着您的代码遇到了问题,而不是您忘记分配正确的环境。您需要做的是查看实际错误是什么。您有许多选项,其中最快的可能是启用开发环境错误(考虑临时添加app.UseDeveloperExceptionPage();或将环境设置为“DEV”)。更强大的方法是添加一些应用程序错误处理和日志记录(查看异常过滤器主题)。

于 2016-09-09T13:58:08.737 回答
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 使

services.AddCors(options =>
{
    options.AddPolicy("CorsPolicy",
        builder => builder.AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials());
});

而你的方法配置使用:

app.UseCors("CorsPolicy");
app.UseMvc();

将允许每个人访问您的 API,我建议您阅读有关 CORS 的 Microsoft Docs。 https://docs.microsoft.com/pt-br/aspnet/core/security/cors?view=aspnetcore-2.2

要解决错误 500,我看到了这个主题。我使用了问题的配置并解决了我的问题。 在从 Angular 6 调用 ASP.NET Core Web API 的服务器异常上获取 CORS 错误 *only*

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();
}
于 2019-05-08T22:56:36.160 回答