- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用下面的代码将已发布的文件保存到服务器,但该文件正在不断读取并且需要使用 FileShare.ReadWrite 所以我不会收到锁定错误。
httpRequest.Files[0].SaveAs(filePath);
下面是我的阅读方法,我怎样才能用HttpPosted文件完成这个是性能最好的正确方法。
using (var fileStream = new FileStream(
fileLocation,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
using (var streamReader = new StreamReader(fileStream))
{
xDocument = XDocument.Parse(streamReader.ReadToEnd());
}
}
这是我最好的选择吗?
using (var memoryStream = new MemoryStream())
{
httpRequest.Files[0].InputStream.CopyTo(memoryStream);
var bytes = memoryStream.ToArray();
using (var fs = File.Open(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite))
{
fs.Write(bytes, 0, bytes.Length);
}
}
最佳答案
using System;
using System.IO;
using System.Threading;
using System.Web.Mvc;
namespace stackoverflow_56307594.Controllers
{
public class HomeController : Controller
{
public ActionResult A()
{
readFile();
return View();
}
public ActionResult B()
{
writeFile();
return View();
}
private static object writeLock = new Object();
private void readFile()
{
while (!Monitor.TryEnter(writeLock, 5000)) ; //wait 5000 ms for the writeLock (serializing access)
using (var stream = new FileStream("filePath", FileMode.Open, FileAccess.Read, FileShare.Read))
using (var reader = new StreamReader(stream))
{
// active read
// xDocument = XDocument.Parse(streamReader.ReadToEnd());
}
}
private void writeFile()
{
lock (writeLock)
{
FileStream stream = null;
while (stream == null) //wait for the active read
{
try
{
stream = new FileStream("filePath", FileMode.Open, FileAccess.ReadWrite, FileShare.None);
}
catch (IOException)
{
// will fail if active read becase FileShare.None while (stream == null) will wait
}
}
Request.Files[0].InputStream.CopyTo(stream);
}// unlock
}
}
}
c# - Deleting files in use - Stack Overflow
multithreading - Is there a way to detect if an object is locked? - Stack Overflow
Implementing Singleton in C# | Microsoft Docs
c# - Using the same lock for multiple methods - Stack Overflow
c# - Write-Once, Read-Many Lock - Stack Overflow
关于c# - 在 ASP.NET MVC 中将 FileShare.ReadWrite 与 HttpPostedFile 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307594/
我想通过 powershell 自动执行许多日常任务。我们的流程之一是在下类后对桌面进行镜像。此操作完成后,需要将图像文件从服务器硬盘移至网络驱动器。我正在编写一个应用程序作为服务在我的机器上运行,它
我需要通过 ARM 模板存储帐户 --> 文件共享 --> 已安装文件共享的容器来创建。 依赖关系是: 文件共享取决于存储帐户 容器取决于文件共享 如何获取Fileshare的ReferenceId?
下面是我用来将文件保存到 azure fileshare 的 Runbook 代码。但无法保存在子目录中。 #Set the context using the storage account nam
我在生产中有一个应用服务,我正在切换到 aks,因此我将使用文件共享作为卷。 如何将我的应用服务中的文件夹(exp 路径:/home/site/wwwroot/public)复制到我的新 Azure
当使用文件流,并将FileShare设置为None时,并假设两个用户同时访问同一功能想要读取/写入该文件。 FileShare.None 会让第二个用户的请求等待还是第二个用户的请求会抛出异常? //
在编写一些处理日志和文件的代码时,我在 Windows 文件 io 中发现了一些令人困惑的行为。有谁知道为什么这个测试会失败并显示“无法读取文件”消息? [TestMethod] public voi
我正在尝试将购买的租赁的到期时间设置为 1 分钟。这是我的代码 var shareClient = new ShareClient(connectionString, "testfileshare")
我想建立自己的平面文件数据库。这是我访问平面文件数据库的方式 Dim fs As New System.IO.FileStream("C:\MyDb.txt", IO.FileMode.Open, I
我正在使用 MySQL Docker 容器,我想在其中使用 Azure 文件共享。要创建 MySQL Docker 容器,我使用以下 Buildscript。 FROM mysql:5.7 RUN a
我正在使用 MySQL Docker 容器,我想在其中使用 Azure 文件共享。要创建 MySQL Docker 容器,我使用以下 Buildscript。 FROM mysql:5.7 RUN a
多年来,我们一直在使用以下代码。 /// /// Opens a file and returns an exclusive handle. The file is deleted
当我从 Azure DevOps 管道挂载 Azure 文件共享并通过 robocopy 将文件复制到文件共享时,每分钟 80 兆字节 (12 MBit/s) 速度非常慢:
我正在使用以下代码打开我之前在用户的 %TEMP% 文件夹中创建的用于阅读的文件: new FileStream(cacheFileName, FileMode.Open, FileAccess.Re
我看到这个问题: How can I read a file even when getting an "in use by another process" exception?在 Windows
我一直在阅读有关在 Linux Web 应用程序上安装 Azure 存储帐户文件共享的信息:https://learn.microsoft.com/en-us/azure/azure-function
我需要评估 Azure FileShare 的使用情况并使用 Fileshare 存储上传/下载文件。该应用程序的当前功能是用户可以从本地计算机上传文件,也可以从 ISS 根文件夹下载文件。 现在迁移
我正在使用下面的代码将已发布的文件保存到服务器,但该文件正在不断读取并且需要使用 FileShare.ReadWrite 所以我不会收到锁定错误。 httpRequest.Files[0].Save
我是一名优秀的程序员,十分优秀!