进程无法访问该文件,因为它正由另一个进程使用

Che*_*hev 4 .net c# asp.net io webforms

我正在使用带有C#的ASP.NET Webforms.在一个页面上,我单击"提交"以在服务器上创建文件.

File.Create(Server.MapPath(ConfigurationManager.AppSettings["LandingPages"])
            + landingPage.FriendlyName);
Run Code Online (Sandbox Code Playgroud)

这工作正常,并按预期创建文件.但是,在执行此操作后,它会重定向到另一个页面,该页面将读取刚刚创建的文件.

var landingPageContent 
       = File.ReadAllText(Server.MapPath(ConfigurationManager.AppSettings["LandingPages"]) 
                          + landingPage.FriendlyName);
Run Code Online (Sandbox Code Playgroud)

那是我收到这个错误的时候.

该进程无法访问文件'c:\ code\Content\CMS\LandingPages\Test2',因为它正由另一个进程使用.

如果我重新启动IIS,那么进程会释放该文件,我可以加载该页面并正确读取该文件.File.Create为了在重定向之前关闭文件,我需要做些什么吗?

Mat*_*nen 9

你关闭了返回的流File.Create吗?这个名字有点令人困惑(它从WinAPI的内容中传出来),但它创建了一个文件打开它为你写作.


cic*_*chy 7

File.Create返回Filstream,试试这个:

using (FileStream fs = System.IO.File.Create(...)){}
Run Code Online (Sandbox Code Playgroud)

或更短:

File.Create(...).Dispose();
Run Code Online (Sandbox Code Playgroud)