这是我的第一个DotNetCore 2.0应用程序,我想用它来比较IIS / Windows和nginx / Ubuntu之间的性能。它是一个应用程序,与许多服务(mongo / redis /会话状态)进行对话,以创建虚假但真实的用户旅程。
该应用程序在Windows上运行时非常正常,从Visual Studio调试或从PostMan BUT调用时,如果我部署到Ubuntu,尽管我可以尽快访问该站点的首页和下一页(均为GET)当我在第二页(只是一个字段)上发布表单时,它从浏览器和邮递员失败了400但没有细节。除了Web服务器启动之外,Ubuntu没有记录任何其他内容,尽管之前已记录错误,因此日志记录正在运行。
我甚至在行动上尝试了IgnoreAntiforgeryToken
,但这没有帮助。
相关配置:
public void ConfigureServices(IServiceCollection services)
{
if (Configuration.GetValue<bool>("useFileSystem"))
{
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(Configuration.GetValue<string>("fileSystemPersistPath")))
.SetApplicationName("Perftest2018");
}
else
{
services.AddDataProtection()
.SetApplicationName("Perftest2018");
}
services.AddMvc();
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromSeconds(30);
options.Cookie.HttpOnly = true;
});
services.Configure<IISOptions>(options =>
{
options.AutomaticAuthentication = false;
});
//<snip> the rest of my services
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseDeveloperExceptionPage();
app.UseStaticFiles();
app.UseSession();
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
app.UseMvc(routes =>
{
routes.MapRoute(name: "default",template: "{controller=Home}/{action=Index}/{id?}");
});
}
行动是这样的:
[HttpPost]
public async Task<IActionResult> Authorize(AuthorizeViewModel model)
{
// The view model just has a single string property with no other attributes
}
答案 0 :(得分:0)
这是由代理中的其他nginx标头引起的,这些标头是从使用TLS运行的另一台服务器中获取的。标题Upgrade $http_upgrade
和Connection "upgrade"
可能不允许POST!