为什么我只在红隼上得到 500?
Why I get a 500 only on kestrel?
我有一个 ASP.NET Core 2.0 WEB-API 它应该可以在 kestrel 上运行,因为它将在那里接待。当我开始使用 Kestrel(查看下面的 launchSettings)时,有一个 POST,我总是得到一个 500 返回,而无需进入代码 。意味着我到处都留下了断点,当我在 Swagger 中执行 POST 时,没有断点被击中。当我改用 IIS 时,它工作正常。 500 马上就来了。在 Linux Kestrel 上部署后也有 500 个。
我执行@Startup.cs:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Use((context, next) =>
{
context.Response.Headers.Remove("Server");
return next();
});
@Program.cs:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseUrls("http://0.0.0.0:5000")
.UseIISIntegration()
.UseApplicationInsights()
.UseKestrel()
.Build();
@launchSettings.json:
"Kestrel": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
使用 Kestrel 时,POST 调用应该使用与 IIS 相同的所有逻辑来处理 Controller 方法。
我用
得到了它
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseIISIntegration()
.UseApplicationInsights()
.UseKestrel(options =>
{
options.Listen(IPAddress.Parse("0.0.0.0"), 5000);
})
.Build();
和启动设置:
"CZKestrel": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:59883/"
}
用于本地调试。
为了让它作为服务工作,我做了 dotnet restore 和 dotnet build,我只将包含创建的 dll 的文件夹复制到其他地方,而不是 运行 / 启动服务。我想当我启动它时,我应该在里面或 dll 文件夹上面的一个文件夹。现在可以了。
我有一个 ASP.NET Core 2.0 WEB-API 它应该可以在 kestrel 上运行,因为它将在那里接待。当我开始使用 Kestrel(查看下面的 launchSettings)时,有一个 POST,我总是得到一个 500 返回,而无需进入代码 。意味着我到处都留下了断点,当我在 Swagger 中执行 POST 时,没有断点被击中。当我改用 IIS 时,它工作正常。 500 马上就来了。在 Linux Kestrel 上部署后也有 500 个。
我执行@Startup.cs:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Use((context, next) =>
{
context.Response.Headers.Remove("Server");
return next();
});
@Program.cs:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseUrls("http://0.0.0.0:5000")
.UseIISIntegration()
.UseApplicationInsights()
.UseKestrel()
.Build();
@launchSettings.json:
"Kestrel": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
使用 Kestrel 时,POST 调用应该使用与 IIS 相同的所有逻辑来处理 Controller 方法。
我用
得到了它 public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseIISIntegration()
.UseApplicationInsights()
.UseKestrel(options =>
{
options.Listen(IPAddress.Parse("0.0.0.0"), 5000);
})
.Build();
和启动设置:
"CZKestrel": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:59883/"
}
用于本地调试。
为了让它作为服务工作,我做了 dotnet restore 和 dotnet build,我只将包含创建的 dll 的文件夹复制到其他地方,而不是 运行 / 启动服务。我想当我启动它时,我应该在里面或 dll 文件夹上面的一个文件夹。现在可以了。