ASP 变量 临时文件夹引发的Asp.Net Core框架异常
最近,在服务器上发现Asp.Net Core经常提示如下异常,访问不了临时文件夹:
可实际上,我们的代码并没有读写这个临时文件夹。
看错误堆栈,应该是框架本身抛出的异常。
解决方案
1.组
前言 最近,在服务器上发现Asp.Net Core经常提示如下异常,访问不了临时文件夹: 可实际上,我们的代码并没有读写这个临时文件夹。 看错误堆栈,应该是框架本身抛出的异常。 解决方案 1.组策略 临时文件夹是肯定存在的。问题的原因主要是访问了这个子目录。 在网上查找原因,说是远程桌面会为每个会话创建独立的临时文件夹,应该是对应的会话ID。 于是,尝试使用组策略解决,不创建独立的临时文件夹: 结果发现,组策略并未起作用,子目录还是创建了,而且该目录还会不定时被删除,即使设置了在退出时不删除临时文件夹也没有用。 2.环境变量 没有办法,只有根据错误堆栈的提示,直接看AspNetCoreTempDirectory源码[1]ASP 变量,看看能否找到问题原因。 TempDirectory属性的实现代码如下: 嗯,有读取环境变量ASPNETCORE_TEMP,那就好办了! 于是创建了环境变量,目前为止,暂未出现问题: 结论 后来查到,造成问题的原因,是HttpRequestRewindExtensions.EnableBuffering 方法[2]提供的特性: 确保 request Body 可以多次读取。通常会将请求正文缓冲到内存中;将大于30000字节的请求写入磁盘。 但是,我们并没有手工调用过此方法,而且仅在Server 2019上才出现问题。 如果你碰到同样异常,可照此处理。 参考资料[1] AspNetCoreTempDirectory源码: [2] HttpRequestRewindExtensions.EnableBuffering 方法: (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |