ASP. NET核心服务器,AllowSynChronousIO
设置为false
new WebHostBuilder()
.UseKestrel(options =>
{
options.AllowSynchronousIO = false;
})
在操作中,它输出一个JsonResult
public async Task<IActionResult> SanityCheck()
{
Dictionary<string, string> dic = await GetDic();
return this.Json(dic);
}
它以一个例外结束
系统。无效操作异常:不允许同步操作。改为调用WriteAsync或将AllowSynChronousIO设置为true。
我不能返回允许同步IO为false的JsonResult吗?
我在单元测试中遇到了这个问题。我必须将我的TestServer更新为AlloSynchronousIO
Server = new TestServer(new WebHostBuilder().UseStartup<Startup>());
Server.AllowSynchronousIO = true;
当异常抛出在您无法控制的代码中,并且您除了启用AllowSynChronousIO
之外别无选择时,最好针对特定请求而不是全局启用它。
在发布此功能的GitHub版本中,建议采用以下解决方法:
var syncIOFeature = HttpContext.Features.Get<IHttpBodyControlFeature>();
if (syncIOFeature != null)
{
syncIOFeature.AllowSynchronousIO = true;
}
您可以创建一个简单的中间件函数,将其应用于特定请求:
app.Use(async (context, next) =>
{
if (context.Request.Path.StartsWithSegments("/some-endpoint-that-needs-sync-io"))
{
var syncIoFeature = context.Features.Get<IHttpBodyControlFeature>();
if (syncIoFeature != null)
{
syncIoFeature.AllowSynchronousIO = true;
}
}
await next();
})
您可能有以下问题:https://github.com/aspnet/AspNetCore/issues/8302
你可以在这里找到更多信息:https://github.com/aspnet/AspNetCore/issues/7644
在问题得到解决之前,一个解决方法是允许同步IO。将其置于启动状态。Kestrel或IIS的cs:
public void ConfigureServices(IServiceCollection services)
{
// If using Kestrel:
services.Configure<KestrelServerOptions>(options =>
{
options.AllowSynchronousIO = true;
});
// If using IIS:
services.Configure<IISServerOptions>(options =>
{
options.AllowSynchronousIO = true;
});
}
我刚起步 (更新:解决方案是将UseRouting移动到/api/error路由下) 但是当时,永远不会调用错误控制器方法。
我想为新用户设置一封确认电子邮件。 所以当调试时,单击链接时,userId是可以的,但“code”输入参数为空,所以 是真的,然后执行 发送给注册用户的电子邮件如下所示: 请单击此链接确认您的帐户:https://localhost:44314/Account/ConfirmEmail?userId=3ec7ac6a-3329-4821-a09b-aa4843598eaa 编辑:链接包含 实际上,
问题内容: 我正在尝试在用户空间中使用mmap读取“ mem_map”开始的物理内存。它是一个包含所有物理页面的数组。这是一台运行3.0内核的i386计算机。 代码是这样的: 我以此为根。输出为: 可以肯定的是,我搜索了问题并将以下行添加到我的/etc/sysctl.conf文件中: 但这也不起作用。 谁知道为什么不允许这样的mem_map操作,以及如何解决呢? 谢谢。 问题答案: 听起来好像内核
我的问题和这个差不多。 ASP。Net Core与EF Core和CosmosDB-身份问题 提供的答案不起作用。这会产生其他问题。当我从升级我的应用程序时,这些错误开始出现。NET Core 3.1 to。净5。降级应用程序使所有错误都消失了。显然,这个问题与efcore 5中引入的对cosmos的乐观并发支持有关。 https://docs.microsoft.com/en-us/ef/cor
当我试图打开索引时。php在浏览器中我看到错误: 在error.log: 2013/11/04 22:40:07[错误]3435#0:*4发送到stderr的FastCGI:“无法打开主脚本:/var/www/index.php(不允许操作)”,同时从上游读取响应头,客户端:10.0。2.2,服务器:localhost,请求:“GET/HTTP/1.1”,上游:fastcgi://127.0.0.
我正在尝试从页面: 控制器: 但是我似乎无法在前端检索会话