我有一个AngularJs应用程序,我移植到.Net Core。
它在之前版本的.Net Core 3预览版中运行良好; 3.2。
但是,升级到最新的3.3后,一些get请求返回此错误:
InvalidOperationException:不允许同步操作。调用WriteAsync或将AllowSynchronousIO设置为true。
我不明白为什么只有一些请求而不是其他请求才会发生这种情况。
我相信默认情况下AngularJs会执行async:xhr.open(method,url,true);
任何人都可以对此有所了解吗?
这里描述了这个问题:https://github.com/aspnet/AspNetCore/issues/8302
现在的解决方法是在startup.cs中手动将AllowSynchronous设置为true;
// Startup.ConfigureServices
services.Configure<IISServerOptions>(options =>
{
options.AllowSynchronousIO = true;
});
感谢Chris Ross的帮助
值得注意的是,如果您直接在kestrel上托管,那么您的Program.cs应该有适当的ConfigureKestrel调用
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureKestrel((context, options) =>
{
options.AllowSynchronousIO = true;
})